2012-09-04 56 views
0

我搜索了很多,但我找不到答案。iOS - 推送的內容

我試圖在應用程序處於後臺時獲取推送通知的內容/有效負載。

的方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

不起作用。

+0

方法didReceiveRemoteNotification:是否被調用?或不? – MaTTP

+0

it's只叫,當應用程序在前臺,而推送通知在到達 – Maik639

回答

1

如果您沒有任何background mode爲應用程序(音頻,gps或voip之一)方法-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo將被稱爲不是立即但在用戶按下「打開」按鈕後,應用程序前景。如果他或她決定跳過通知,則無法執行任何操作,這意味着當應用程序返回前臺時需要刷新狀態,因此無法依賴推送通知來更新數據。

更好的選擇可能是使用徽章計數器來跟蹤的變化,你需要計算它在服務器端。然後,如果前臺的應用程序擁有正面的徽章號碼,則可以更新數據並重置計數器。然而,這並不完美,因爲沒有任何保證,通知已交付 - 您仍然需要手動檢查徽章櫃檯(或者您可以說檢查更改次數)。

+0

- (空)應用程序:(UIApplication的*)應用程序didReceiveRemoteNotification:(NSDictionary的*)USERINFO我將收到的所有推手一個陣列,但也不只有工作,如果應用程序已經在前臺。當用戶按下homebutton並且接受推送並且啓動應用時。我從來沒有得到推動 – Maik639

+0

根據文檔或者這個方法或者'application:didFinishLaunchingWithOptions:'(有效載荷存儲在帶有鍵「UIApplicationLaunchOptionsRemoteNotificationKey」的選項中)被稱爲接收的結果(如果應用程序不是不會運行)推送通知。 –

+0

它真的沒有工作...:/ – Maik639