1. 程式人生 > >基於UMeng訊息推送測試-demo教程(iOS版)

基於UMeng訊息推送測試-demo教程(iOS版)

基於UMeng訊息推送測試-demo教程(iOS版)

眼看著就要過年了(2017本命年終於快過去了臨來嶄新的2018大發年),每個人的心裡就像飛了一樣,這個時候能夠在辦公間待下來的,每個人都是精英,突然想起了那首張含韻的歌《放假了》。

今天是2017年臘月25距離2018年僅有5天,依舊在外拼搏著,馬路倆邊的商鋪陸陸續續關門(有錢沒錢回家過年!!!)

好了,進入正題~~~

前年寫個一篇《基於UMeng第三方分享(新浪)測試-demo教程》教程,感興趣的可以看一下,由於時間比較老舊可能有些操作流程更新了,但是不要緊,大體流程依舊在。

由於要做帶有推送的app, 最終商量決定運用UMeng

的SDK推送,這裡的需求就是我們app自己的伺服器通過umeng-sdk去推訊息。

而不是通過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   // 配置概要檔案

建立並配置推送證書(開發環境&生產環境)

匯出推送證書的P12檔案

在U-Push後臺上傳P12推送證書

*以Ad Hoc方式打包應用

iOS 10證書配置教程

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
來源:書繁簡
繁簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處