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 ); });