這個問題有點老,但我會彈出我在這裏找到的東西。
您需要在應用程序委託中實現以下兩種方法來檢查您的應用程序是從遠程通知啓動的(從應用程序未在設備上運行時啓動)還是在運行時收到遠程通知背景或前景)。
首先是已經在應用程序委託的方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
要檢查,如果這是從遠程通知啓動,有類似這樣的代碼:
// Check to see if launched from notification
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
// DO SOMETHING HERE
}
}
您需要實現的另一種方法特別針對您的應用程序在運行時的應用程序:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"Received notification: %@", userInfo);
}
你如何處理通知取決於你,但這就是你的應用程序知道它的方式!
在第二種方法中,您可以檢查傳遞的應用程序的UIApplicationState以確定您是否處於前景或背景中。