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值



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM