当前位置:   article > 正文

uniapp - 获取应用是否有通知权限_uniapp弹出通知权限

uniapp弹出通知权限

uniapp判断APP是否有通知权限,安卓和IOS都有。并跳转到开启通知页面

  1. /**
  2. * 获取通知状态
  3. */
  4. getNotificationStatus() {
  5. // #ifdef APP-PLUS
  6. let osName = plus.os.name.toLowerCase();
  7. if(osName == 'ios'){
  8. let UIApplication = plus.ios.import("UIApplication");
  9. let app = UIApplication.sharedApplication();
  10. let enabledTypes = 0;
  11. if (app.currentUserNotificationSettings) {
  12. let settings = app.currentUserNotificationSettings();
  13. enabledTypes = settings.plusGetAttribute("types");
  14. } else {
  15. //针对低版本ios系统
  16. enabledTypes = app.enabledRemoteNotificationTypes();
  17. }
  18. plus.ios.deleteObject(app);
  19. if (0 == enabledTypes) {
  20. // 未开启通知
  21. uni.$showModal({
  22. title: "提示",
  23. content: '开启通知权限后才能收到提示消息哦。',
  24. delCancel: false,
  25. confirmVal: '去开启',
  26. cancelVal: '取消',
  27. }).then(res => {
  28. let UIApplication = plus.ios.import("UIApplication");
  29. let NSURL = plus.ios.import("NSURL");
  30. let setting = NSURL.URLWithString("app-settings:");
  31. let application = UIApplication.sharedApplication();
  32. application.openURL(setting);
  33. plus.ios.deleteObject(setting);
  34. plus.ios.deleteObject(application);
  35. });
  36. }
  37. }else if(osName == 'android'){
  38. let main = plus.android.runtimeMainActivity();
  39. let NotificationManagerCompat = plus.android.importClass(
  40. "androidx.core.app.NotificationManagerCompat");
  41. let pkName = main.getPackageName();
  42. let packageNames = NotificationManagerCompat.from(main);
  43. let notificationEnabled = packageNames.areNotificationsEnabled();
  44. if(!notificationEnabled){
  45. // 未开启通知
  46. uni.$showModal({
  47. title: "提示",
  48. content: '开启通知权限后才能收到提示消息哦。',
  49. delCancel: false,
  50. confirmVal: '去开启',
  51. cancelVal: '取消',
  52. }).then(res => {
  53. let uid = main.getApplicationInfo().plusGetAttribute("uid");
  54. let Intent = plus.android.importClass('android.content.Intent');
  55. let Build = plus.android.importClass("android.os.Build");
  56. let intent = '';
  57. console.log("Androd SDK_INT:" + Build.VERSION.SDK_INT);
  58. if (Build.VERSION.SDK_INT >= 26) { // android 8.0引导
  59. intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
  60. intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
  61. } else if (Build.VERSION.SDK_INT >= 21) { //android 5.0-7.0
  62. intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
  63. intent.putExtra("app_package", pkName);
  64. intent.putExtra("app_uid", uid);
  65. } else { //(<21)其他--跳转到该应用管理的详情页
  66. let Settings = plus.android.importClass("android.provider.Settings");
  67. let Uri = plus.android.importClass("android.net.Uri");
  68. intent = new Intent();
  69. intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  70. let uri = Uri.fromParts("package", main.getPackageName(), null);
  71. intent.setData(uri);
  72. }
  73. // 跳转
  74. main.startActivity(intent);
  75. });
  76. }
  77. }
  78. // #endif
  79. },

uni.$showModal 是自己写的全局弹窗。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/274477
推荐阅读
相关标签
  

闽ICP备14008679号