- 先在你的.plist中加入Required background modes,再把item設定為App downloads content in response to push notifications
- 在appDelegate.m中實作下面的function(只有iOS7.0以上才有),這個function會在顯示之前被呼叫。
- (
void
)application:(
UIApplication
*)application
didReceiveRemoteNotification
:(
NSDictionary
*)userInfo
fetchCompletionHandler
:(
void
(^)(
UIBackgroundFetchResult
result))handler
{
//Success
handler(UIBackgroundFetchResultNewData);
- 在appDelegate的didFinishLaunchingWithOptions中註冊通知。
// register for types of remote notifications
[[
UIApplication
sharedApplication
]
registerForRemoteNotificationTypes
:
(UIRemoteNotificationTypeNewsstandContentAvailability|
UIRemoteNotificationTypeBadge
|
UIRemoteNotificationTypeSound
|
UIRemoteNotificationTypeAlert)];
Server推送的資料格式
有聲推播的資料格式:{"aps":{"alert":"Testing.. (9)","badge":1,"sound":"default"}}
無聲推播的資料格式:{"aps":{"content-available":1,"sound":"","say":"hello"}}
其中,"content-avilable":1就是無聲推播的關鍵key。收到無聲推播之後,你可以把無聲推播的userInfo放在Local推播中再發出去,降子你可以在didReceiveLocalNotification中收到資訊。
您好,想請教,推播只有APP在背景(background mode)才會跳Alert view,如果使用無聲推播,再發出去... 可以讓APP在前景跳出AlertView嗎? 謝謝。
回覆刪除可以,其實在概念上只要想說這裡是一個callback trigger,接到推播之後的處理都由你自己來寫,你可以判斷目前是在foreground或是background來決定推出來或是只要秀AlertView。
回覆刪除比較符合Design Pattern的作法會是將訊息處理成message物件,然後另外寫一個class專門處理這個物件,降子是比較好的寫法,方便後續的修改與維護。
我後來有找一些資料,幾乎所有的資料都是說APP只有在背景(background)的情況下才能收推播(remote push notification),如果是在foreground,好像推播訊息會到ios 底層,但不會再傳到APP,不知道我理解是否有誤?
刪除所以在前景的情況下,是不可能做到收推播並且跳出Alert ?
你說的應該是iOS7以前的有聲推播的方式,那是直接由server來控制app在背景時要推出什麼訊息或是聲音。
回覆刪除這裡說的無聲推播沒有這個限制,即使在foreground仍然可以收到server推出來的訊息。
測試OK,不管有聲推播或是無聲推播,都可以在前景收到。
刪除在ios 7之後。
是啊,敞公司的App就是走這樣的機制,謝謝你的回覆~
刪除ios 7 之前前景確定是不行的,所以敝公司... 在前景才逼不得已用SIP Message... @@"~
刪除哈哈哈,貴公司是做VoIP的App嗎?
刪除原本的主力是VoIP, audio / video call, and sip server, DB, web .... etc.
刪除目前朝game發展...
VoIP是條不歸路.....
這麼沉重的嘆息~
刪除因為擋在前面的大魔王太強大了嗎........skype
可以詳細分享這段心路歷程嗎XDD
刪除Thanks, 我再試試看。
回覆刪除Apple寫的文件沒有很清楚指出前景可不可以收到無聲推播。
https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW22
請問無聲推撥是一定要 app 在背景或前景才能處理嗎?如果 app 沒有被執行是不是就石沈大海了?
回覆刪除