zoukankan      html  css  js  c++  java
  • 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 ); 
            });
  • 相关阅读:
    分享关于Entity Framework 进行CRUD操作实验的结果
    总结Unity IOC容器通过配置实现类型映射的几种基本使用方法
    Python深入:Distutils发布Python模块--转载
    原创:R包制作--windows
    提高R语言速度--转载
    R 语言 Windows 环境 安装与Windows下制作R的package--Rtools
    极简 R 包建立方法--转载
    R的极客理想系列文章--转载
    如何创建R包并将其发布在 CRAN / GitHub 上--转载
    教你如何成为数据科学家(六)
  • 原文地址:https://www.cnblogs.com/tlfe/p/11268888.html
Copyright © 2011-2022 走看看