废话不多说,直接上步骤!问题在下面会列出来。需要注意的是:本文中所有的目录结构及文件,均为自动生成的;若非生成,则会标明。
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中,添加自定义的方法,并实现。
这里基本就算介绍完毕了。
祝大家都顺利集成!