@tencentcloud/chat-uikit-uniapp
Version:
TUIKit 是基于 IM SDK 实现的一套 UI 组件,其包含会话、聊天、群组、个人资料等功能,基于这些精心设计的 UI 组件,您可以快速构建优雅的、可靠的、可扩展的 Chat 应用。
102 lines (95 loc) • 3.61 kB
JavaScript
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,
};