最近公司使用sencha touch开发app需要实现推送的功能,本渣花了一周的时间才把安卓和ios都实现了推送已经跳转页面的功能。晚上关于推送的资料很少,关于推送后页面跳转的资料就更少了,所以这里记录一下怕以后忘了。
首先是安卓的实现方式(首先需要在极光推送上面去注册一个账号):
1:用sencha CMD创建st应用:
sencha -sdk D:\java\sencha-touch\touch-2.3.1 generate app FirstApp ../FirstApp
这样就生成了一个标准的sencha touch文件
2:在刚在创建的st文件夹里面初始化phonegap(cmd里面的文件目录需要在文件夹下面)
sencha phonegap init com.cloudvast.FirstApp FirstApp
com.cloudvast.FirstApp这个很重要,这个需要和你在极光推送里面创建的安卓的应用包名一致否则可能会出错。初始化了phonegap后文件夹下面的文件为:
需要先修改下phonegap.local.properties这个文件:
把这里的ios修改成android,因为我们现在打包的是安卓应用;
3:安装极光推送针对phonegap的插件,把cmd里面的目录cd到phonegap文件夹下
phonegap plugin add https://github.com/jpush/jpush-phonegap-plugin.git
安装成功后会多一个极光的插件包:
打开新生成的文件,选择push-sdk-release1.6.1.jar文件:
鼠标右键 > Build Path > add to Build Path添加到工程中
再打开相同目录下的JPushPlugin.java文件
找到这一行,把com.thi.pushtest修改为初始化phonegap用的那个包名,我这里修改后为:import com.cloudvast.FirstApp.R;,保存后关闭
找到 插件包下面的plugin.xml文件并打开:
找到这一行
在value里面填上我们在极光推送上面申请到的AppKey。
到此为止,phonegap集合极光推送就完成了,打包后就能正常的用推送了。接下来是实现页面跳转的功能:
找到插件包下面的JPushPlugin.js文件打开:
在文件中添加一段代码:
JPushPlugin.prototype.getNotification = function(successCallback, data) { console.log("JPushPlugin:getNotification"); try { ret = cordova.exec(successCallback, successCallback, 'JPushPlugin', "getNotification", [data]); return ret; } catch (exception) { alert(exception); } }
然后在我们的sencha touch中的app.js文件中写逻辑代码
添加代码:
document.addEventListener('resume', function() { window.plugins.jPushPlugin.getNotification(function(obj) { // obj["message"]为收到的推送信息 if (obj["message"] != "") { var EXTRA = obj.extras['cn.jpush.android.EXTRA']; EXTRA = EXTRA.replace(/\\/g, ""); EXTRA = Ext.JSON.decode(EXTRA, true); if (EXTRA.type == "mode") { Ext.getCmp('tab').setActiveItem(1);// 如果传递过来的type=='mode'就跳转到第二张页面 } } }, false); });
EXTRA为极光推送发送通知的时候下面的可选设置中的附加字段。
最后把cmd的目录移动到phonegap目录下面执行打包操作:
sencha app build native
打包完成后就在该目录下面生成了apk文件:
phonegap+极光推送+页面跳转