ios手机app消息推送

h5+app项目,推送平台 " 个推 "

首先在manifest.json配置文件中点击模块权限配置,勾选push消息推送配置如图1-1

第二部在manifest.json配置文件SDK配置中勾选推送为个推,如图,

可以点击推送配置指南查看官方指南

在开发者中心申请的appid、appkey等填写在对应位置,然后打包成app

 开发者中心网站 https://dev.getui.com/dos5.0/#/config/351843721188751/appConfig

判断ios系统推送功能是否开启,并提醒前往设置开启推送功能,原文 https://ask.dcloud.net.cn/article/35727

// 判断iOS系统推送功能是否开启,并提醒去设置页打开设置推送
        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": ["是", "否"],
                            "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);
        } 

添加推送消息事件监听器  原文档地址 http://www.html5plus.org/doc/zh_cn/push.html

支持事件类型:"click"-从系统消息中心点击消息启动应用事件;"receive"-应用从推送服务器接收到推送消息事

//"所有plus api都应该在此事件发生后调用,否则会出现plus is undefined"
    document.addEventListener('plusready', function(){
            // 扩展API加载完毕,现在可以正常调用扩展API
      plus.runtime.setBadgeNumber(0);//用户没有点击推送栏的消息进来,直接点击app进入,清除用户消息未读数量
            // 添加监听从系统消息中心点击某条消息启动应用事件,该click事件只有应用离线或者后台运行时才会触发,点击相应的推送消息执行里面的逻辑处理
            plus.push.addEventListener( "click", function ( msg ) {
                // 分析msg.payload处理业务逻辑 
                plus.runtime.setBadgeNumber(0); //清空badge用户消息未读数量
                if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) { //判断当前手机的机型为苹果等
                    if(msg.payload.open || msg.payload.url){
            console.log("应用离线(或应用后台运行:触发“click”事件)",msg.payload.open) //open app协议
            console.log("应用离线(或应用后台运行:触发“click”事件)",msg.payload.url) //url打开网址
                        if(msg.payload.url){
                            mui.init({ //用户每次点击左侧返回按钮处理页面返回
                                beforeback: function(){
                                        let viewObj = plus.webview.getWebviewById('jmbz_app'); //查找指定标识的WebviewObject窗口
                                        viewObj.canBack((event) => {  //查询Webview窗口是否可后退
                                            var canBack = event.canBack;  //event.canBack是否可返回
                                            if(canBack) { //可返回
                                                viewObj.back(); //返回上一级
                                            } else {
                                                plus.webview.close('jmbz_app') //关闭Webview窗口
                                            }
                                        })
                                    return false
                                }
                            });
                            mui.openWindow({  //打开带原生导航栏的新页面
                                url: msg.payload.url, //打开的地址
                                id: 'jmbz_app',    //打开的id,自定义
                                styles: {                             // 窗口参数 参考5+规范中的WebviewStyle,也就是说WebviewStyle下的参数都可以在此设置
                                    titleNView: {                       // 窗口的标题栏控件
                                        autoBackButton: true,                            //标题栏控件是否显示左侧返回按钮
                                        // titleText:"标题栏",             // 标题栏文字,当不设置此属性时,默认加载当前页面的标题,并自动更新页面的标题
                                        titleColor:"#000000",             // 字体颜色,颜色值格式为"#RRGGBB",默认值为"#000000"
                                        titleSize:"17px",                 // 字体大小,默认17px
                                        backgroundColor:"#F7F7F7",        // 控件背景颜色,颜色值格式为"#RRGGBB",默认值为"#F7F7F7"
                                        progress:{                        // 标题栏控件的进度条样式
                                            color:"#00FF00",                // 进度条颜色,默认值为"#00FF00"  
                                            height:"2px"                    // 进度条高度,默认值为"2px"         
                                        },
                                        splitLine:{                       // 标题栏控件的底部分割线,类似borderBottom
                                            color:"#CCCCCC",                // 分割线颜色,默认值为"#CCCCCC"  
                                            height:"1px"                    // 分割线高度,默认值为"2px"
                                        }
                                    }
                                }
                            });
                        }else{
                            window.location.href = msg.payload.open //打开应用app或者网址
                            window.setTimeout(function () {
                                window.location.href = msg.payload.download; //下载app地址
                            }, 2000)
                        }
                    }
                }
            }, false ); 
        });
原文地址:https://www.cnblogs.com/tlfe/p/11268888.html