diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index 6ab450445..3428b1782 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -33,8 +33,11 @@ CTCallCenter* callCenter; BOOL started; int savedMaxCall; + } +- (void)processRemoteNotification:(NSDictionary*)userInfo; + @property (assign) BOOL started; @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index d788dc58a..df79dbbb6 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -162,7 +162,11 @@ } [self startApplication]; - + NSDictionary *aps=[launchOptions objectForKey:@"aps"]; + if (aps){ + [LinphoneLogger log:LinphoneLoggerLog format:@"PushNotification from launch received."]; + [self processRemoteNotification:launchOptions]; + } return YES; } @@ -184,6 +188,7 @@ - (void)applicationWillTerminate:(UIApplication *)application { + } - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { @@ -200,9 +205,8 @@ return YES; } -- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { - [LinphoneLogger log:LinphoneLoggerLog format:@"PushNotification: Receive %@", userInfo]; - NSDictionary *aps = [userInfo objectForKey:@"aps"]; +- (void)processRemoteNotification:(NSDictionary*)userInfo{ + NSDictionary *aps = [userInfo objectForKey:@"aps"]; if(aps != nil) { NSDictionary *alert = [aps objectForKey:@"alert"]; if(alert != nil) { @@ -218,8 +222,9 @@ [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]]; } else if([loc_key isEqualToString:@"IC_MSG"]) { //it's a call - if ([alert objectForKey:@"call-id"]) - [[LinphoneManager instance] enableAutoAnswerForCallId:[alert objectForKey:@"call-id"]]; + NSString *callid=[userInfo objectForKey:@"call-id"]; + if (callid) + [[LinphoneManager instance] enableAutoAnswerForCallId:callid]; else [LinphoneLogger log:LinphoneLoggerError format:@"PushNotification: does not have call-id yet, fix it !"]; } @@ -228,6 +233,11 @@ } } +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { + [LinphoneLogger log:LinphoneLoggerLog format:@"PushNotification: Receive %@", userInfo]; + [self processRemoteNotification:userInfo]; +} + - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { if([notification.userInfo objectForKey:@"call"] != nil) { LinphoneCall* call;