phonegap + 推送 + 页面跳转 (ios)

os如果没有页面跳转的需求的话就使用极光推送,如果有页面跳转如果用了极光推送就只有用oc去写,但是我不会oc,所以智能放弃极光选用ios自己的apns来实现

新建项目跟安卓创建项目差不多,新建完成后就是初始话phonegap,注意在phonegap.local.properties文件中phonegap.platform设置为ios

cmd移动到新建的项目的phonegap的文件夹下面安装插件:

 

[plain] view plain copy
  1. phonegap local plugin add https://github.com/phonegap-build/PushPlugin.git  

安装完插件后我们就可以在app.js文件夹中编写逻辑代码了。主要的逻辑代码写在app.js中的lunch方法中,写在外面会找不到对象

 

[javascript] view plain copy
  1. plugins.pushNotification.register(  
  2.                                   tokenHandler,  
  3.                                   errorHandler,  
  4.                                   {  
  5.                                   "badge":"true",  
  6.                                   "sound":"true",  
  7.                                   "alert":"true",  
  8.                                   "ecb":"onNotificationAPN"  
  9.                                   });  

tokenHandler是获取token的方法:

 

[javascript] view plain copy
  1. function tokenHandler (result) {  
  2.     alert('token = ' + result);  
  3. }  

获得的这个token非常的重要,后面自己实现的apns推送需要这个token来标明推送到哪台设备上

errorHandler为错误的回调,可以在这里提醒下用户获取推送失败什么的

 

[javascript] view plain copy
  1. function errorHandler (result) {  
  2.     // Your iOS push server needs to know the token before it can push to this device  
  3.     // here is where you might want to send it the token for later use.  
  4. }  


我这里没有写逻辑

onNotificationAPN:这个东西就是非常重要了,这个就是点击了推送后的回调函数

 

[javascript] view plain copy
  1. function onNotificationAPN(event){      
  2.     if ( event.alert )  
  3.     {  
  4.         Ext.getCmp('tab').setActiveItem(1);  
  5.     }    
  6. }  

这个方法里面就可以写跳转页面的逻辑代码,我这里的逻辑是如果推送内容不为空就跳转到第二张页面

app的代码就完成了,现在就需要写自己实现apns的方法。java的实现代码

解压包后里面有一个com的文件夹和一个text的文件,把com文件夹放到java项目中,然后再写一个controller调用text文件里面的方法;

text里面加载了一个p12的文件,这个文件是我们申请的推送许可,生成方法

token:是我们app里面获取到的那个token,根据这个推送到设备上面。

如果想像极光推送那样发送附加字段可以在

 

[java] view plain copy
  1. String payload = APNS.newPayload().customField("type", 4).alertBody(content).badge(badge).build();  

这句代码中加上.customField(),参数就是key-value的键值对,发生成功后在前台的tokenHandler里面直接result.key值就能获取到相应的value值


你可能感兴趣的:(PhoneGap)