Apple Push Notification 這塊在網路上已經有網友(Luis Felipe)分享了,包含完整 Client/Server 端的 source code 與 video,不過這位老兄可能是西班牙人,所以看 blog 或是聽 video 可能會有點吃力

blog

http://lfgonzalez.visiblogs.com/2013/05/delhi-xe4-ios-adicionando-soporte-a-notificaciones-remotas-video-y-codigo-fuente/

source code

http://lfgonzalez.visiblogs.com/2013/05/delhi-xe4-ios-adicionando-soporte-a-notificaciones-remotas-video-y-codigo-fuente/apnserverandclient/

video

https://www.youtube.com/watch?v=ObKkZTSSynA

Client 端的部分,Luis Felipe 提出的解決方案,需要修改 EMBT 原本附的 source...FMX.Platform.iOS.pas,因此雖然解決方案可行,但是可以想見只要每次 delphi 改版,這部分就得跟著調整一次,因此筆者比較偏好另外一位老兄 Dave Nottage 提出的作法,這部分他是有分享在 Embarcadero Discussion Forums,但好巧不巧這幾天要上 Embarcadero Discussion Forums 這個網站,都會顯示「Site Maintenance In Progress」...所以我也只能先提供網址嚕

https://forums.embarcadero.com/thread.jspa?messageID=664203&tstart=0

若上述網址能順利開啟,請下載 PushClientDemo.zip

Dave Nottage 提出的方式,只需要 uses 他提供的 Apple.RemoteNotification.pas,不需要修改 EMBT 原始的 source code,這樣就比較方便嚕...

延續之前的 app..iOSBlogDemo,要完成 client 端的部分,總共有兩大步驟要完成

1.因為要使用 Push Notifications,所以必須到 Apple Member Center 開通這個服務

2.app 的部分要能順利取得 token,並將 token 回傳到後端

 

首先是開通 Push Notifications 服務的部分,登入 Member Center,找到屬於這個 app 的 App ID 後,你可以看到 Push Notifications 這個服務預設是沒有啟用的

因此我們需要按一下下方的 edit 按鈕,然後把 Push Notifications 打勾,並且產生 Production SSL 的 Certificate

Certificate 產生完成後記得 download

然後到 Provisioning Profiles,在 Distribution 的部分你會發現有個黃色的驚嘆號,表示這個 Provisioning Profile 需要重新產生/下載

如果一切都順利的話,再開啟一次 App IDs,你應該可以看到 Push Notifications 的服務已經 Enabled 了

接下來是 app 的部分,把畫面修改一下加個 button 測試看看能否順利取得 token

button 按下去的程式碼如下

另外要使用 Push Notifications,App 的部分需要指明 CFBundleName 與 CFBundleIdentifier,這兩個部分必須跟你在

Member Center 裡面申請的 App ID 是一樣的,因此修改如下

最後還有一個部分,也是 apple 的規定,必須要有 Entitlements.plist 這個檔案,內容如下

紅框的部分一樣得跟 App ID 一樣,包含大小寫,而且必須再加上 Prefix

另外要特別注意的是換行只能有 LF,不能有 CR,否則可能會有錯(其他網友說的),筆者是用 notepad++ 做為編輯器,並且開啟顯示所有符號作確認

Entitlements.plist 這個檔案其實原本 EMBT 也有附,而且是自動產生的,由於內容並非我們所需,所以必須要用另外一個檔案來取代自動產生的這個,如下

自動產生的那個在 release 目錄,請把勾勾取消,換成你自己的

一切就緒只欠東風...那就執行看看吧

按下 button 後

token可以順利取得!記得把 token 寫回後端,這部分就不另外說明了,因為跟之前 android GCM regID 的方式是一樣的

 

比賽結束!

 

to be continued....

    縹緲 發表在 痞客邦 留言(10) 人氣()