123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- /// null = 未请求,1 = 已允许,0 = 拒绝|受限, 2 = 系统未开启
- var isIOS
- function album() {
- var result = 0;
- var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
- var authStatus = PHPhotoLibrary.authorizationStatus();
- if (authStatus === 0) {
- result = null;
- } else if (authStatus == 3) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(PHPhotoLibrary);
- return result;
- }
- function camera() {
- var result = 0;
- var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
- var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
- if (authStatus === 0) {
- result = null;
- } else if (authStatus == 3) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(AVCaptureDevice);
- return result;
- }
- function location() {
- var result = 0;
- var cllocationManger = plus.ios.import("CLLocationManager");
- var enable = cllocationManger.locationServicesEnabled();
- var status = cllocationManger.authorizationStatus();
- if (!enable) {
- result = 2;
- } else if (status === 0) {
- result = null;
- } else if (status === 3 || status === 4) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(cllocationManger);
- return result;
- }
- function push() {
- var result = 0;
- var UIApplication = plus.ios.import("UIApplication");
- var app = UIApplication.sharedApplication();
- var enabledTypes = 0;
- if (app.currentUserNotificationSettings) {
- var settings = app.currentUserNotificationSettings();
- enabledTypes = settings.plusGetAttribute("types");
- if (enabledTypes == 0) {
- result = 0;
- console.log("推送权限没有开启");
- } else {
- result = 1;
- console.log("已经开启推送功能!")
- }
- plus.ios.deleteObject(settings);
- } else {
- enabledTypes = app.enabledRemoteNotificationTypes();
- if (enabledTypes == 0) {
- result = 3;
- console.log("推送权限没有开启!");
- } else {
- result = 4;
- console.log("已经开启推送功能!")
- }
- }
- plus.ios.deleteObject(app);
- plus.ios.deleteObject(UIApplication);
- return result;
- }
- function contact() {
- var result = 0;
- var CNContactStore = plus.ios.import("CNContactStore");
- var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
- if (cnAuthStatus === 0) {
- result = null;
- } else if (cnAuthStatus == 3) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(CNContactStore);
- return result;
- }
- function record() {
- var result = null;
- var avaudiosession = plus.ios.import("AVAudioSession");
- var avaudio = avaudiosession.sharedInstance();
- var status = avaudio.recordPermission();
- if (status === 1970168948) {
- result = null;
- } else if (status === 1735552628) {
- result = 1;
- } else {
- result = 0;
- }
- plus.ios.deleteObject(avaudiosession);
- return result;
- }
- function calendar() {
- var result = null;
- var EKEventStore = plus.ios.import("EKEventStore");
- var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
- if (ekAuthStatus == 3) {
- result = 1;
- console.log("日历权限已经开启");
- } else {
- console.log("日历权限没有开启");
- }
- plus.ios.deleteObject(EKEventStore);
- return result;
- }
- function memo() {
- var result = null;
- var EKEventStore = plus.ios.import("EKEventStore");
- var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
- if (ekAuthStatus == 3) {
- result = 1;
- console.log("备忘录权限已经开启");
- } else {
- console.log("备忘录权限没有开启");
- }
- plus.ios.deleteObject(EKEventStore);
- return result;
- }
- function requestIOS(permissionID) {
- return new Promise((resolve, reject) => {
- switch (permissionID) {
- case "push":
- resolve(push());
- break;
- case "location":
- resolve(location());
- break;
- case "record":
- resolve(record());
- break;
- case "camera":
- resolve(camera());
- break;
- case "album":
- resolve(album());
- break;
- case "contact":
- resolve(contact());
- break;
- case "calendar":
- resolve(calendar());
- break;
- case "memo":
- resolve(memo());
- break;
- default:
- resolve(0);
- break;
- }
- });
- }
- function requestAndroid(permissionID) {
- return new Promise((resolve, reject) => {
- plus.android.requestPermissions(
- [permissionID],
- function(resultObj) {
- var result = 0;
- for (var i = 0; i < resultObj.granted.length; i++) {
- var grantedPermission = resultObj.granted[i];
- console.log('已获取的权限:' + grantedPermission);
- result = 1
- }
- for (var i = 0; i < resultObj.deniedPresent.length; i++) {
- var deniedPresentPermission = resultObj.deniedPresent[i];
- console.log('拒绝本次申请的权限:' + deniedPresentPermission);
- result = 0
- }
- for (var i = 0; i < resultObj.deniedAlways.length; i++) {
- var deniedAlwaysPermission = resultObj.deniedAlways[i];
- console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
- result = -1
- }
- resolve(result);
- },
- function(error) {
- console.log('result error: ' + error.message)
- resolve({
- code: error.code,
- message: error.message
- });
- }
- );
- });
- }
- function gotoAppPermissionSetting() {
- if (permission.isIOS) {
- var UIApplication = plus.ios.import("UIApplication");
- var application2 = UIApplication.sharedApplication();
- var NSURL2 = plus.ios.import("NSURL");
- var setting2 = NSURL2.URLWithString("app-settings:");
- application2.openURL(setting2);
- plus.ios.deleteObject(setting2);
- plus.ios.deleteObject(NSURL2);
- plus.ios.deleteObject(application2);
- } else {
- var Intent = plus.android.importClass("android.content.Intent");
- var Settings = plus.android.importClass("android.provider.Settings");
- var Uri = plus.android.importClass("android.net.Uri");
- var mainActivity = plus.android.runtimeMainActivity();
- var intent = new Intent();
- intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
- intent.setData(uri);
- mainActivity.startActivity(intent);
- }
- }
- const permission = {
- get isIOS(){
- return typeof isIOS === 'boolean' ? isIOS : (isIOS = uni.getSystemInfoSync().platform === 'ios')
- },
- requestIOS: requestIOS,
- requestAndroid: requestAndroid,
- gotoAppSetting: gotoAppPermissionSetting
- }
- module.exports = permission
|