Cordova 使用极光推送 的几个问题

废话不多说,直接上步骤!问题在下面会列出来。需要注意的是:本文中所有的目录结构及文件,均为自动生成的;若非生成,则会标明。

1、创建项目或者打开已有项目(这里有个问题点,下面会介绍)

cordova create xxx(目录名) com.xxx.xxx(包名) xxx(项目名)

2、添加平台应用(这里以安卓为例)

cd xxx(目录名)
cordova platform add android  
3、下载插件(尽量不要在windows的cmd下运行,如果你有配置错误,那么就获取不到了;推荐使用鼠标右键->Git Bash)

git clone https://github.com/jpush/jpush-phonegap-plugin.git

4、运行完毕,在当前目录中(cmd窗口或者Git Bash窗口中显示的目录)找到“jpush-phonegap-plugin”

打开目录jpush-phonegap-plugin ,打开plugin.xml,在155行左右,找到

将其中的android:value="your appkey" 改为你申请的app key。

打开jpush-phonegap-plugin\src\android目录中,找到JPushPlugin.java文件,在第22行,找到import your.package.name.R;改为你自己的包名,即最开始创建项目时使用的包名(这里有个问题点,下面会介绍)

5、修改完毕,添加cordova对jpush的引用

cordova plugin add jpush-phonegap-plugin(目录,也可以改名,如jpush也可,推荐在项目当前目录中添加。)
jpush推送要求对devices的引用,所以,需要添加对devices的插件引用。 
cordova plugin add org.apache.cordova.device

至此,jpush的配置基本完毕。

6、打开创建的项目目录中的www目录,打开js目录,并打开index.js文件,忽略前面那堆英文!本例只为获取RegistrationID和设置setTagsWithAlias

此处代码:

    // Bind Event Listeners
    //
    // Bind any events that are required on startup. Common events are:
    // 'load', 'deviceready', 'offline', and 'online'.
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
        document.addEventListener("jpush.setTagsWithAlias", this.onTagsWithAlias, false);//添加这行代码。
    },

此处代码:

 onDeviceReady: function() {
        window.plugins.jPushPlugin.init(); //初始化
        window.plugins.jPushPlugin.getRegistrationID(function(id){
        //将获取到的id存入服务端
            alert(id);//这里可能获取不到,因为有网络延迟,可不在此处获取。下面会介绍。
        });
        app.receivedEvent('deviceready');
    },

此处代码:(直接跟在onDeviceReady后面即可)

onTagsWithAlias : function(event){
        alert("onTagsWithAlias方法执行");
        window.plugins.jPushPlugin.getRegistrationID(function(id){
        //将获取到的id存入服务端
            alert(id);这里就可以获取到注册的ID了
        });
),

7、回到根目录(项目根目录),打开index.html。添如下代码:

       


                测试
       

8、新建一个html文件,本例以myView.html命名,

添加如下代码:(在实际项目中,脚本文件直接在一个文件中同时注册完毕即可)



    按钮

9、新建myView.js文件,添加如下代码:

function get_id_code(){
    var alias = "别名alias";
    var dd = [];
    dd.push("标签tags");
    window.plugins.jPushPlugin.setTagsWithAlias(dd,alias);
}

至此,基本完成推送的集成应用了。可以使用命令cordova run android来运行测试;若首次打开,无法获取RegistrationID

则可点击按钮(myView.html中的按钮),测试是否可以获取RegistrationID,并alert出来。

如果可以alert出来,就是执行了2个方法.

即获取window.plugins.jPushPlugin.getRegistrationID(XXX)

执行设置标签和别名:window.plugins.jPushPlugin.setTagsWithAlias(dd,alias);并且执行回调函数onTagsWithAlias。


这里有几个问题点:

1、创建的新项目中,包名要和极光推送注册的项目包名保持一致,否则可能导致集成失败或其他不可预知的错误!

2、已有的项目添加极光推送,那么,还是在极光推送中创建一个与项目包名一致的应用吧。

3、JPushPlugin.java中的包名,必须更改为注册的项目包名,否则集成失败!

4、若要添加自定义的事件,必须在JPushPlugin.java的第32行Arrays.asList中,添加自定义的方法,并实现。

这里基本就算介绍完毕了。

祝大家都顺利集成!













你可能感兴趣的:(Android)