os如果沒有頁面跳轉的需求的話就使用極光推送,如果有頁面跳轉如果用了極光推送就只有用oc去寫,但是我不會oc,所以智能放棄極光選用ios自己的apns來實現
新建項目跟安卓創建項目差不多,新建完成后就是初始話phonegap,注意在phonegap.local.properties文件中phonegap.platform設置為ios
cmd移動到新建的項目的phonegap的文件夾下面安裝插件:
- phonegap local plugin add https://github.com/phonegap-build/PushPlugin.git
安裝完插件后我們就可以在app.js文件夾中編寫邏輯代碼了。主要的邏輯代碼寫在app.js中的lunch方法中,寫在外面會找不到對象
- plugins.pushNotification.register(
- tokenHandler,
- errorHandler,
- {
- "badge":"true",
- "sound":"true",
- "alert":"true",
- "ecb":"onNotificationAPN"
- });
tokenHandler是獲取token的方法:
- function tokenHandler (result) {
- alert('token = ' + result);
- }
獲得的這個token非常的重要,后面自己實現的apns推送需要這個token來標明推送到哪台設備上
errorHandler為錯誤的回調,可以在這里提醒下用戶獲取推送失敗什么的
- function errorHandler (result) {
- // Your iOS push server needs to know the token before it can push to this device
- // here is where you might want to send it the token for later use.
- }
我這里沒有寫邏輯
onNotificationAPN:這個東西就是非常重要了,這個就是點擊了推送后的回調函數
- function onNotificationAPN(event){
- if ( event.alert )
- {
- Ext.getCmp('tab').setActiveItem(1);
- }
- }
這個方法里面就可以寫跳轉頁面的邏輯代碼,我這里的邏輯是如果推送內容不為空就跳轉到第二張頁面
app的代碼就完成了,現在就需要寫自己實現apns的方法。java的實現代碼
解壓包后里面有一個com的文件夾和一個text的文件,把com文件夾放到java項目中,然后再寫一個controller調用text文件里面的方法;
text里面加載了一個p12的文件,這個文件是我們申請的推送許可,生成方法
token:是我們app里面獲取到的那個token,根據這個推送到設備上面。
如果想像極光推送那樣發送附加字段可以在
- String payload = APNS.newPayload().customField("type", 4).alertBody(content).badge(badge).build();
這句代碼中加上.customField(),參數就是key-value的鍵值對,發生成功后在前台的tokenHandler里面直接result.key值就能獲取到相應的value值