2

我正在使用iOS7,我試圖確定在以下情況下是否可以獲取JSON負載。當用戶在後臺接收到推送信息後手動打開應用程序時獲取推送通知負載

  • 我有背景模式「遠程通知」啓用
  • 接收推送通知而應用程序是終止
  • 該應用從通知中心手動啓動從圖標

當我收到通知後從圖標本身啓動應用程序時,我沒有得到在啓動選項推從

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

和下面的方法不會被調用既可以當應用程序手動從圖標

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

+0

見我的答案。很可能你沒有1.)在你的info.plist文件中啓用後臺遠程通知或者2.)你發送給應用程序的推送通知不包含'content-available':1. –

回答

1

推出我終於想通了,你如何能得到這個!

從iOS 7開始就可以了!

基本上,您需要爲後臺遠程通知配置您的應用程序。

所以,在你Info.plist文件: For required backgrounds - 將其設置爲app downloads content from push notifications.

AppDelegate.m文件,你需要實現這個方法:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

如何看到這個實現:didReceiveRemoteNotification: fetchCompletionHandler: open from icon vs push notification

對於您的推送通知,您必須具有'content-available': 1,作爲推送的一部分而不是ification。這是告訴應用程序在顯示警報之前有新內容。

後臺遠程通知有關更多信息,請參見本頁面:http://developer.xamarin.com/guides/cross-platform/application_fundamentals/backgrounding/part_3_ios_backgrounding_techniques/updating_an_application_in_the_background/

+0

Don'我認爲這個解決方案可以解決我的問題我不認爲這是可能的。此方法是否允許您在應用程序終止並從應用程序圖標打開應用程序後接收有效載荷? –

+0

如果你的意思是你殺了應用程序,那麼不行 - 你將無法獲取數據。您可以獲取該場景的數據的唯一方法是通過查詢服務器獲取數據(如果將其保存在某處)。 此解決方案處理您的應用程序是否在後臺打開並運行 - 它們會收到警報 - 用戶選擇應用程序圖標而不是橫幅提醒。然後,它會在用戶看到它之前獲取數據並更新任何視圖控制器。 –

+0

因此,真的沒有辦法告訴應用程序沒有運行時有通知? –

相關問題