在開始本篇IOS之前, 遇到了一個小問題, 因為在測試Android時, 升級了Xamarin的版本, 沒想到這一升, 在試跑IOS模擬器時, 出現底下錯誤
找到底下檔案刪除
重新佈署後, 又發生底下問題, 因為Visual Stuidio Xamarin版本比Mac版本新
要解決這個問題就是Mac上Xamarin一樣要更到最新, 且xcode也要一併要更新, 這個花了兩天處理, 現在開始擔心會不會斷賽了. 接著進入正題, 要對IOS發訊息, 是需要註冊APNs憑證, 首先到Apple developer站台, 在Identifiers 新增一個新App ID如下
這次選Explicit App ID, 然後填入Bundle ID
勾選 Push Notifications
最後按下Register
接著點選APNs Auth Key, 再點Certificate Signing Request, 這個可以套用Day08的作法
接下來點選Apple Push Notification service SSL(Sandbox)
選擇剛剛新建的App ID
接著按下Continue
選擇Day08產生的檔案, 按下Continue
最後就可以下載APNs的憑證
回到憑證清單, 就可以看到多出一個APNs綁定App ID的專屬憑證
回到App IDs, 即可看到Push Notifications已經enable了
接下來還要建Provisioning Profile, 細節請參照Day08, 完成之後如下,且必須在xcode將它下載下來, 不然Visual Studio會抓不到這個Provisioning
回到MAC OSX裡, 先匯入剛剛的APNs憑證
然後按下右鍵, 再Export如下紅框所示
選擇p12格式按下Save
然後輸入密碼按下OK
回到Azure Portal的Push notification services設定, 選擇Apple, 再上傳剛剛匯出的p12憑證
輸入剛設定的密碼, 因為是測試用, 所以選擇Sandbox, 最後按下OK
完成畫面如下圖
接下來到Visual Studio裡繼續設定, 點選IOS專案屬性, 在IOS Application, 填入剛剛建立的App Name與App ID
在IOS Bundle Signing選擇剛建立的Provisioning file
在IOS專案目錄下找到Info.plist並打開, 點選Background Modes, 勾選Remote Notifications
接著可以來寫程式了, 打開AppDelegate.cs, 先加入底下兩個參考
...
using Microsoft.WindowsAzure.MobileServices;
using Newtonsoft.Json.Linq;
...
修改FinishedLaunching函式如下
加入RegisteredForRemoteNotifications函式如下
加入DidReceiveRemoteNotification函式如下
建置完畢後, 部署到實機IPhone去, 然後到到Azure Portal的Push notification 進行測試
成功畫面如下
後記: 還好Day08打過基礎, 這IOS篇還不算太難~