天天看點

iOS: 極光推送

之前做過環信和友盟的推送,照着官方文檔內建其實挺簡單的,今天公司需要,特地做了一下極光推送。不用不知道,原來極光推送內建如此簡單,不得不說說了。

當然做推送錢需要做一些準備工作了,就是推送必須的p12推送證書:開發環境(開發時測試需要的推送證書)、生産環境(釋出到AppStore時需要的推送證書),因為xcode已經更新到了7.0以上,是以一些真機測試的配置檔案證書就不需要自己手動去建立了,隻要有Apple ID,真機測試時,就能自動生成,免費測試:

制作證書的過程就不啰嗦了,詳細看官方文檔或者如下推薦:

<a href="http://jingyan.baidu.com/article/c1465413975cba0bfcfc4ccf.html" target="_blank">http://jingyan.baidu.com/article/c1465413975cba0bfcfc4ccf.html</a>

<a href="http://docs.jpush.io/client/ios_tutorials/#ios_1" target="_blank">http://docs.jpush.io/client/ios_tutorials/#ios_1</a>

<a href="http://docs.jpush.io/guideline/ios_guide/" target="_blank">http://docs.jpush.io/guideline/ios_guide/</a>

<a href="http://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao28?utm_source=tuicool&amp;utm_medium=referral" target="_blank">http://allluckly.cn/投稿/tuogao28?utm_source=tuicool&amp;utm_medium=referral</a>

建立完證書,就是去極光官網新增賬號,建立應用,截圖如下:

iOS: 極光推送

将建立的證書上傳到應用上了,上傳成功後的截圖如下:

iOS: 極光推送

證書上傳成功後,生成APP Key,截圖如下:

iOS: 極光推送

好了,這下工作做完了,剩下的就是代碼實作了:

第一步:下載下傳SDK,将需要的兩個檔案導入項目中:

iOS: 極光推送

包名為JPush-iOS-SDK-{版本号}

lib檔案夾:包含頭檔案 JPUSHService.h,靜态庫檔案jpush-ios-x.x.x.a ,支援的iOS版本為 5.0 及以上版本。(請注意:模拟器不支援APNs)

pdf檔案:內建指南

demo檔案夾:示例

第二步:導入需要依賴的庫檔案:

CFNetwork.framework

CoreFoundation.framework

CoreTelephony.framework

SystemConfiguration.framework

CoreGraphics.framework

Foundation.framework

UIKit.framework

Security.framework

Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib

Adsupport.framework (擷取IDFA需要;如果不使用IDFA,請不要添加)

第三步:建立一個工具類,名稱為KJJPushHelper,封裝注冊時的各種方法

.h

iOS: 極光推送
iOS: 極光推送

.m

iOS: 極光推送
iOS: 極光推送

第四步:建立一個APPDelegate的分類,在該類中調用KJJPushHelper中的類方法

iOS: 極光推送
iOS: 極光推送

第五步:在AppDelegate中注冊即可

好了,大功告成,插上真機運作:列印結果如下

iOS: 極光推送

去官網測試一下:

iOS: 極光推送

真機收到消息截圖:

iOS: 極光推送

內建過程中遇到的問題,困擾了好久,後來找出來了,分享一下:

當時證書一切都沒有問題,但是總是出現這個列印:

錯誤資訊JPUSH | W - [JPUSHClientController] Not get deviceToken yet. Maybe: your certificate not configured APNs? or current network is not so good so APNs registration failed? or there is no APNs register code? Please refer to JPush docs.

推送消息時,出現的提示:

iOS: 極光推送

我的原因是:

由于項目之前用到了環信SDK,環信得已經注冊了通知,在AppDelegate中注冊通知,didRegisterForRemoteNotificationsWithDeviceToken與didFailToRegisterForRemoteNotificationsWithError方法,均不執行。。。需到環信注冊通知的地方,再次注冊極光通知。方可以擷取到Token執行。

擴充:極光推送中的定向推送

極光推送中,不使用廣播推送,那麼怎樣做到定向推送,是開發者和需求一定會出現的問題,極光推送中可以有兩個唯一值:

(1)注冊Jpush成功後生成的registrationID,這個registrationID是标記裝置唯一性的,你發現,當你在啟動多次,注冊Jpush時,這個值是不變的;在同一個裝置上,更換使用者登入,這個值仍然不變;最後,你删除應用程式,再下載下傳時啟動注冊Jpush,這個值還是不變。這就可以定向向某台裝置做推送,如果你能給自己的伺服器上傳這個值,并且給這個值綁定一些東西,是不是可以做更多事情呢。

(2)alias:隻要了解極光推送的都知道這是設定别名的,官方文檔上說明了這個值不是唯一的,但是建議開發者把它作為使用者的唯一标記。我覺得這個作為唯一值是最好的,當你想定向向某個使用者做推送,或者召喚他回歸我們的應用程式,這個值就太好了。你可以将它設定為userId,這個時候推送就能知道向哪個使用者發了。

本人原創,轉載須注明出處,謝謝!

程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!

本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/5463802.html,如需轉載請自行聯系原作者

繼續閱讀