基於UMeng訊息推送測試-demo教程(iOS版)
基於UMeng訊息推送測試-demo教程(iOS版)
眼看著就要過年了(2017本命年終於快過去了臨來嶄新的2018大發年),每個人的心裡就像飛了一樣,這個時候能夠在辦公間待下來的,每個人都是精英,突然想起了那首張含韻的歌《放假了》。
今天是2017年臘月25距離2018年僅有5天,依舊在外拼搏著,馬路倆邊的商鋪陸陸續續關門(有錢沒錢回家過年!!!)
好了,進入正題~~~
前年寫個一篇《基於UMeng第三方分享(新浪)測試-demo教程》教程,感興趣的可以看一下,由於時間比較老舊可能有些操作流程更新了,但是不要緊,大體流程依舊在。
由於要做帶有推送的app, 最終商量決定運用UMeng
而不是通過Umeng的官網後臺去編輯訊息進行推送。這裡需要安卓,iOS,以及我們的app java server 都需要進行umeng-sdk的整合。而今天這篇教程是通過Umeng的官網後臺去編輯訊息進行推送,後續再陸續進行更新以上需求教程
通過Umeng的官網後臺去編輯訊息進行推送到app
1.整合sdk
1.1.下載iOS端的umeng-sdk
Push SDK 3.0.1
下載後的檔案是如下這樣的:
Push SDK 3.0.1裡的內容
其中:Common // 公共元件是所有友盟產品的基礎元件,必選
push // Push元件
1.2.新增依賴庫
基礎依賴庫
CoreTelephony.framework 獲取運營商標識
libz.tbd 資料壓縮
libsqlite.tbd 資料快取
SystemConfiguration.framework 判斷網路狀態
可選依賴庫
SecurityEnvSDK.framework 金融風控元件
UTDID.framework 裝置標識ID元件
上述的可選依賴庫在thirdparties資料夾裡
SecurityEnvSDK.framework 金融風控元件 UTDID.framework 裝置標識ID元件
筆者在新增可選依賴庫後,執行報錯,我就把它給刪除了(不新增可選依賴庫)
1.3.選擇SDK功能元件並下載,解壓.zip檔案得到相應元件包(例如:UMCommon.framework, UMPush.framework這來個庫必須新增進來)。
XcodeFile —> Add Files to "Your Project",在彈出Panel選中所下載元件包->Add。(注:選中“Copy items if needed”)
UMCommon.framework, UMPush.framework這來個庫必須新增進來
新增依賴庫,在專案設定target -> 選項卡General ->Linked Frameworks and Libraries 如下以及效果:
整體效果
1.4.開啟推送開關
點選專案---->TARGET---->Capabilities,將這裡的Push Notification的開關開啟,效果如圖所示:
Push Notification的開關開啟
同時點選專案---->TARGET---->Capabilities-->Background Modes--->Remote notifications也要勾選上,如下:
TARGET---->Capabilities-->Background Modes--->Remote notifications也要勾選上
至此工程的配置已經完成了,接下來就是程式碼的編寫,但是這之前還需要進行證書的配置。
2.iOS證書配置指南
是為了在umeng官網上傳自己的p12證書,注意需要測試證書和生產證書,都需要上傳,已經你匯出p12時設定的密碼
使用訊息推送功能前,需要嚴格按照此文件配置相關證書。否則將會影響訊息推送元件的正常使用。
本文件包括:
建立APP ID // 類似於身份證標示
建立並配置CSR檔案 // CSR是Cerificate Signing Request的英文縮寫,即證書請求檔案,在申請數字證書時由CSP(加密服務提供者)在生成私鑰的同時也生成證書請求檔案
建立並配置開發除錯證書 // Certificates
建立並配置Provisioning Profiles // 配置概要檔案
2.1建立APP ID
登入Apple Member Center :https://developer.apple.com/membercenter,選擇certificates,identifiers&profiles 選項,如下圖所示:
選擇certificates,identifiers&profiles 選項
選擇identity中的APP IDs,如下圖所示:
Identifiers也就是一個標示相當於身份證號碼
注意:建立Explicit App ID時,要注意此時設定的Bundle ID要與APP以後的Bundle ID一致,如下圖所示:
注意此時設定的Bundle ID要與APP以後的Bundle ID一致
選擇Push Notification 來開通Push功能,如下圖所示:
Push Notification 來開通Push功能
點選下方的register 按鈕,幾秒鐘之後下方會變成一個Done ,表示APP ID已經建立完成,如下圖所示:
注意: 建立的APP ID要與自己專案的Bundle ID保持一致。如果已經有APP ID,請確保自己的APP ID已經開通了Push功能,如果沒有開通,可以點選APP ID,在其底部有一個Edit按鈕,點選後選中Push服務並建立,如下圖所示:
至此,APP ID建立完畢
2.2.建立CSR檔案
如果你已經有CSR檔案,請繼續進行下一步的設定。(跳過2.2步驟的操作)
CSR是Cerificate Signing Request的英文縮寫,即證書請求檔案。證書申請者在申請數字證書時由CSP(加密服務提供者)在生成私鑰的同時也生成證書請求檔案。證書申請者只要把CSR檔案提交給證書頒發機構後,證書頒發機構使用其根證書私鑰簽名就生成了證書公鑰檔案,也就是頒發給使用者的證書。
在電腦中找到鑰匙串----->鑰匙串訪問------>證書管理------>從證書頒發機構請求證書,如下圖所示:
設定完證書資訊後,點選“繼續”,然後選擇儲存位置(儲存到桌面),點選儲存,至此,CSR檔案建立成功。
檔案如下:PushTestCertificateSigningRequest.certSigningRequest
PushTestCertificateSigningRequest.certSigningRequest
2.3.建立開發除錯證書
如果你已經有開發除錯證書,請繼續進行下一步的設定。(跳過2.3步驟的操作)
選擇Development(如果是釋出上線,需要選擇Distribution),如下圖所示:
在這裡我們先選測試證書(開發證書),後文中也會進行生產證書操作(Distribution),應為umeng官網後臺同時需要開發證書(也就是測試證書)和生產證書
之後,你將看到如下四個證書。這一步,我們選擇iOS App Development證書,如下圖所示:
在choose file...中選擇本地的CertificateSigningRequest(CSR)檔案,然後點選繼續,如下圖所示:
在choose file...中選擇本地的CertificateSigningRequest(CSR)檔案,然後點選繼續,如下圖所示:
點選Download,將證書下載到本地,雙擊下載的開發除錯證書(檔名為:iOS_development.cer)
點選Download,將證書下載到本地,雙擊下載的開發除錯證書(檔名為:iOS_development.cer),就可以在鑰匙串訪問中的我的證書中找到。(這裡必須要注意的是:必須要雙擊下,否則,後面的推送會出現
狀態:失敗
訊息:device-token全部失敗
的情況自己不注意的坑)
造成的失敗,筆者就失敗在這裡了
下載後的檔案如下:
ios_development.cer
至此,開發除錯證書設定完畢
2.4. 新增測試裝置
測試推送需要新增測試裝置,新增方法如下所示:
2.5.建立Provisioning Profiles檔案 (配置概要檔案)
選擇Development,建立開發環境的Provisioning Profiles(如果是釋出上線,需要選擇Distribution),如下圖所示:
開發的配置概要檔案
開發的配置概要檔案
建立新的Provisioning Profiles,並選擇之前生成好的App ID。如下圖所示:
選擇之前生成好的App ID
選中建立的證書:
選中建立的證書:
選中測試裝置:
選中測試裝置:
把建立的Provisioning Profiles,除錯證書,推送證書下載下來(檔名:umengpushtestdemo.mobileprovision)以後雙擊證書
檔案如下:umengtestdemo.mobileprovision
umengtestdemo.mobileprovision
2.6.建立推送證書
選擇Apple Push Notification service SSL(Sandbox)
這裡筆者先選開發的推送證書
注意:推送證書分為開發環境和生產環境,如果需要生成生產環境的推送證書請選擇: Apple Push Notification service SSL (Sandbox&Production),如下圖所示:
Apple Push Notification service SSL (Sandbox&Production)
選中APP ID後,點選continue,直到上傳CRS檔案,如下圖所示:
選擇上方的PushTestCertificateSigningRequest.certSigningRequest檔案
點選下載,將證書下載到本地後,雙擊下載的開發環境推送證書(檔名為:aps_development.cer),就可以在鑰匙串訪問中的我的證書中找到。
檔案如下:aps_development.cer
aps_development.cer
2.6。匯出推送證書的P12檔案
注意:在鑰匙串訪問(鑰匙圈)的我的證書中選擇剛剛匯入的證書,選擇匯出,注意不要選中私鑰,並設定相應密碼即可。
正確的匯出方式:
錯誤的匯出方式如下:
注意:此步驟所設定的密碼將在之後在U-Push後臺上傳推送證書時所使用,且密碼只能包含大小寫(az,AZ),數字(0-9),特殊字元(。-_) ,其他元素將會被過濾。
生產環境的推送證書也是以同樣的方式匯出。
至此,P12證書匯出完畢。
2.7。在U型推後臺上傳P12推送證書
點選應用進入應用資訊選項,即可上傳已被匯出的P12證書,如下圖所示:
然後以同樣的上述方式,配置成產的證書,並匯出P12檔案設定密碼,上傳到umeng官網後臺的生產證書項裡
3.工程程式碼的編寫
4.在umeng官網後臺的操作
,上述步驟中 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {裡會列印裝置令牌的值64位的字元,新增到umeng官網後臺的測試裝置裡
然後就是官網後臺傳送推送的操作,可以用單播的形式:
最終實現的效果圖:
下面說一下關於umeng推送過程中遇到的坑:如下圖:
裝置令牌全部失敗
裝置令牌全部失敗
DeviceTokenNotForTopic
這裡一系列的原因:umeng官方並沒有給出具體的解決方案,聯絡客戶又是那麼費時費力
解決方案1:
新增測試機裝置的DeviceToken無效或者失敗,報紅色或者黃色都是不行的,
解決方案2:
配置證書時選的appID必須和x-code裡的Bundle Identifier相同,這是最大的一個坑,詳細參見:http://bbs.umeng.com/thread-16274-1-2.html
演示地址:
https://github.com/mrzhao12/UMengPushTest
作者:ttdiOS
連結:HTTPS://www.jianshu.com/p/b5078166d9f6
來源:書繁簡
繁簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。