zoukankan      html  css  js  c++  java
  • app集成极光推送笔记(angular js)

    出处:极光推送官方文档以及github上的文档
    1.安装
    一般使用cordova安装(其他安装方式详见文档),命令行输入:

    cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey

    安装之后就可以直接使用,不需要window.JPush.init(),并且以下操作一般放在app启动时进行,并且需要在cordova的ondeviceready事件中。

    2.获取RegistrationID

    window.JPush.getRegistrationID(function (data) {                
          $rootScope.registrationID = data;
          $log.debug("JPushPlugin:registration ID:"+$rootScope.registrationID);
    });

    获取到的设备id用来进行设备绑定,可以用$rootScope上的一个变量来存储,项目中发现android设备第一次获取RegistrationID是空的第二次就好了,ios正常,不知道什么原因。
    3.设置别名(alias)与标签(tags)
    别名和标签也是用来进行设备绑定的,一般别名选用例如用户名,标签就例如Student或者teacher等等,可为每个用户打多个标签,所以标签是一个数组,设置了别名和标签后可以通过jpush.setTagsWithAlias事件来监听设置是否成功,其中的resultCode可以参考github文档中的错误定义。

    var tags = new Array();
    tags[0] = "student";
    window.JPush.setTagsWithAlias(tags, username);    //设置别名与标签
    document.addEventListener("jpush.setTagsWithAlias", function (event) {    //设置别名标签的监听事件
          $log.debug("result code:" + event.resultCode + "tags:" + event.tags + "alias:" + event.alias);
    }, false);

    4.设备与服务器的绑定
    上面所获取到的RegistrationID、别名、标签都是用来进行设备绑定的必须字段,具体项目中需要什么就需要与后台进行沟通了,接着调用后台提供的绑定接口进行设备绑定,以便于可以收到推送消息。

    5.获取点击通知内容
    下一步就是收到推送消息,点击消息获取相应数据,点击事件如下:

    document.addEventListener("jpush.openNotification", function (event) {}, false);

    不同平台有不同的获取数据方式,例如:
    Android

    $scope.jpushToDetailData={
        "messageId":event.extras.push_page_url,
        "openMessageType":event.extras.push_type
    };

    IOS

    $scope.jpushToDetailData={
        "messageId":event.push_page_url,
        "openMessageType":event.push_type
    };

    可以看出Android在获取数据时多了一层extras。要注意的是这个事件也是放在cordova的ondeviceready事件中,并且一定要放在整个项目最开始的位置,例如rootController中。拿到了数据,接下来想做什么就依具体情况而定。

    6.设备解绑
    绑定了设备当然也就有解绑设备,例如在用户退出登录时,解绑设备一般只需要提供RegistrationID,调用后台提供的解绑接口传入RegistrationID就可以了。

    7.关于IOS中的badge角标的注意点
    这里只说一下关于如何清除角标(具体在哪里清除依项目而定,例如打开app或者读取消息之后),这时需要先调用window.JPush.resetBadge();清除服务器端的角标数,再调用window.JPush.setApplicationIconBadgeNumber(0);清除本地的角标数,具体参考github文档IOS部分,一般需要在cordova的ondeviceready和onresume事件中。并且前提是要进行平台判断,例如:

    document.addEventListener("resume", function () {
          if ($window.isMobile.IOS() !== undefined && $window.isMobile.IOS() !== null) {//清空IOS中应用角标,服务器和本地
                    window.JPush.resetBadge();
                    window.JPush.setApplicationIconBadgeNumber(0);
          }
    }, false);

    需要注意的是如果只使用了window.JPush.setApplicationIconBadgeNumber(0);虽然每次可以清除角标,但是下次收到推送时角标数就会在上次基础上累加。所以必须先使用window.JPush.resetBadge();清除掉服务器端的角标数,这一点从极光的官方文档就显而易见。

  • 相关阅读:
    JS控制SVG缩放+鼠标控制事件
    JS多线程之Web Worker
    通过Java调用Python脚本
    Cornerstone的使用
    SVN服务器的搭建
    Python 函数作用域
    RDD转换算子(transformantion)
    Spark RDD简介
    Django 外键
    Django 模型常用属性
  • 原文地址:https://www.cnblogs.com/li-you/p/6374075.html
Copyright © 2011-2022 走看看