CLP
CLP
  • 发布:2019-03-22 20:10
  • 更新:2021-11-23 18:17
  • 阅读:12841

判断iOS系统推送功能是否开启,并可提醒去设置页打开设置推送

分类:5+ SDK

如果需要判断ios系统推送功能是否开启,并提醒去设置页打开设置推送,可以用以下nativeJS 代码:

function isOpenPush() {  
                var UIApplication = plus.ios.import("UIApplication");  
                var app = UIApplication.sharedApplication();  
                var enabledTypes = 0;  
                if (app.currentUserNotificationSettings) {  
                    var settings = app.currentUserNotificationSettings();  
                    enabledTypes = settings.plusGetAttribute("types");  
                    console.log("enabledTypes1:" + enabledTypes);  
                    if (enabledTypes == 0) {  
                        plus.nativeUI.confirm("推送设置没有开启,是否去开启?", function(e) {  
                            if (e.index == 0) {  
                                var NSURL2 = plus.ios.import("NSURL");  
                                var setting2 = NSURL2.URLWithString("app-settings:");  
                                var application2 = UIApplication.sharedApplication();  
                                application2.openURL(setting2);  
                                plus.ios.deleteObject(setting2);  
                                plus.ios.deleteObject(NSURL2);  
                                plus.ios.deleteObject(application2);  
                            }  
                        }, {  
                            "buttons": ["Yes", "No"],  
                            "verticalAlign": "center"  
                        });  
                    }  
                    plus.ios.deleteObject(settings);  
                } else {  
                    enabledTypes = app.enabledRemoteNotificationTypes();  
                    if(enabledTypes == 0){  
                        console.log("推送未开启!");  
                    }else{  
                        console.log("已经开启推送功能!")  
                    }  
                    console.log("enabledTypes2:" + enabledTypes);  
                }  
                plus.ios.deleteObject(app);  
            }

此功能在uniapp项目且配置为自定义模式的时候,会报:“plus.ios.import is not a function”错误。
该问题已经在HBuilderX1.9.4.20190426 之后版本已经解决

1 关注 分享
今天回复我了吗

要回复文章请先登录注册

8***@qq.com

8***@qq.com

离线打包提示 打包时未添加native.js模块
2021-11-23 18:17
9***@qq.com

9***@qq.com

用的插件市场一个百度语音合成的插件进行的语音播报。然后安卓的在切换应用或者息屏之后会进行播报,只在清除进程之后才不播报。ios的只有在App显示的时候才播报,切换到其他应用界面或者息屏就不播报了,这是怎么回事呢?
2020-07-06 08:52
CLP

CLP (作者)

回复 q***@163.com :
你单独写个按钮 会报错吗?具体报的什么错? 是uniapp 自定义组件模式吗?
2019-05-10 15:27
q***@163.com

q***@163.com

代码和你这个是一模一样的,我catch住的异常信息,报的行号就是那一行。
2019-05-10 15:19
q***@163.com

q***@163.com

function isOpenPush() {
uni.getSystemInfo({
success: (res) => {
if (res.platform.toLowerCase() === 'ios') {
try {
_isOpenPush();
} catch (e) {
_debug('检查推送是否开启出错.' + JSON.stringify(e));
}
}
}
})
}

function _isOpenPush() {
var UIApplication = plus.ios.import("UIApplication");
var app = UIApplication.sharedApplication();
var enabledTypes = 0;
if (app.currentUserNotificationSettings) {
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
console.log("enabledTypes1:" + enabledTypes);
if (enabledTypes == 0) {
plus.nativeUI.confirm("推送设置没有开启,是否去开启?", function(e) {
if (e.index == 0) {
var NSURL2 = plus.ios.import("NSURL");
var setting2 = NSURL2.URLWithString("app-settings:");
var application2 = UIApplication.sharedApplication();
application2.openURL(setting2);
plus.ios.deleteObject(setting2);
plus.ios.deleteObject(NSURL2);
plus.ios.deleteObject(application2);
}
}, {
"buttons": ["Yes", "No"],
"verticalAlign": "center"
});
}
plus.ios.deleteObject(settings);
} else {
enabledTypes = app.enabledRemoteNotificationTypes();
if (enabledTypes == 0) {
console.log("推送未开启!");
} else {
console.log("已经开启推送功能!")
}
console.log("enabledTypes2:" + enabledTypes);
}
plus.ios.deleteObject(app);
}
2019-05-10 15:17
CLP

CLP (作者)

回复 q***@163.com :
把完整的发出来,如果你觉得是这行的错误,你可以单独写这一段 看报不报错
2019-05-10 11:26
q***@163.com

q***@163.com

2506行刚好是 if (app.currentUserNotificationSettings) { 这行代码报错了
2019-05-10 00:54
q***@163.com

q***@163.com

为什么我1.8版本的hx是正常的,升级到1.9.4.20190426反而报错了呢。{"line":2506,"column":40,"sourceURL":"app-service.js"}
2019-05-10 00:52
CJoey

CJoey

回复 CLP :
什么时候上修复后的版本,在线等
2019-04-30 17:22
GUNDAM

GUNDAM

回复 CLP :
等下周发版吗?
2019-04-29 13:43