UNPKG

@tencentcloud/chat-uikit-uniapp

Version:

TUIKit 是基于 IM SDK 实现的一套 UI 组件,其包含会话、聊天、群组、个人资料等功能,基于这些精心设计的 UI 组件,您可以快速构建优雅的、可靠的、可扩展的 Chat 应用。

102 lines (95 loc) 3.61 kB
let isIos; // #ifdef APP-PLUS isIos = (plus.os.name == 'iOS'); // #endif // 判断麦克风权限是否开启(iOS) function judgeIosPermissionRecord() { let result = false; const avaudiosession = plus.ios.import('AVAudioSession'); const avaudio = avaudiosession.sharedInstance(); const permissionStatus = avaudio.recordPermission(); console.log('[Permission] iOS permissionStatus:', permissionStatus); if (permissionStatus == 1684369017 || permissionStatus == 1970168948) { console.log('[Permission] iOS 麦克风权限没有开启'); } else { result = true; console.log('[Permission] iOS 麦克风权限已经开启'); } plus.ios.deleteObject(avaudiosession); return result; } // Android 权限查询 function requestAndroidPermission(permissionID) { return new Promise((resolve, reject) => { plus.android.requestPermissions( [permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装 (resultObj) => { let result = 0; for (var i = 0; i < resultObj.granted.length; i++) { const grantedPermission = resultObj.granted[i]; console.log(`[Permission] Android 已获取的权限:${grantedPermission}`); result = 1; } for (var i = 0; i < resultObj.deniedPresent.length; i++) { const deniedPresentPermission = resultObj.deniedPresent[i]; console.log(`[Permission] Android 拒绝本次申请的权限:${deniedPresentPermission}`); result = 0; } for (var i = 0; i < resultObj.deniedAlways.length; i++) { const deniedAlwaysPermission = resultObj.deniedAlways[i]; console.log(`[Permission] Android 永久拒绝申请的权限:${deniedAlwaysPermission}`); result = -1; } resolve(result); }, (error) => { console.log(`[Permission] Android 申请权限错误:${error.code} = ${error.message}`); resolve({ code: error.code, message: error.message, }); }, ); }); } // 跳转到**应用**的权限页面 function gotoAppPermissionSetting() { if (isIos) { const UIApplication = plus.ios.import('UIApplication'); const application2 = UIApplication.sharedApplication(); const NSURL2 = plus.ios.import('NSURL'); const setting2 = NSURL2.URLWithString('app-settings:'); application2.openURL(setting2); plus.ios.deleteObject(setting2); plus.ios.deleteObject(NSURL2); plus.ios.deleteObject(application2); } else { const Intent = plus.android.importClass('android.content.Intent'); const Settings = plus.android.importClass('android.provider.Settings'); const Uri = plus.android.importClass('android.net.Uri'); const mainActivity = plus.android.runtimeMainActivity(); const intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); const uri = Uri.fromParts('package', mainActivity.getPackageName(), null); intent.setData(uri); mainActivity.startActivity(intent); } } function checkPermissionStatusInApp(permission) { const status = plus.navigator.checkPermission(permission); switch (status) { case 'authorized': return 1; case 'denied': return -1; default: return 0; // 未授权或状态未知 // https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.checkPermission } } export { judgeIosPermissionRecord, requestAndroidPermission, gotoAppPermissionSetting, checkPermissionStatusInApp, };