iOS推送接收通知代码执行

我正在为iOS开发消息应用程序。

我保留用户的电话号码到服务器,但我不保留在后端的联系人名称。

当用户收到来自服务器的推送通知时,服务器通过通知载荷向用户发送电话号码和消息内容。 我实现了application:didReceiveRemoteNotification:fetchCompletionHandler方法来显示本地通知。 我查找phoneContactName:phoneNumber对的本地数据库,并以格式显示本地通知:%phoneContactName%:%messageContent%

但是,障碍是,我现在不应该如何执行这个代码,当应用程序不运行。 我试图执行应用程序:didFinishLaunchingWithOptions并在那里检查

NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 

但是这个代码没有被调用。

所以为了解决这个问题,我想问你我应该使用什么架构模型。 我应该在服务器端保持联系人姓名从服务器端发送notification.alert与联系人的名称(到目前为止,我的服务器不知道联系人的电话号码的名称),或有任何方式来执行代码时,应用程序没有运行?

PS另外,当收到通知时,我计算客户端的徽章号码。 所以,如果可能的话,代码执行解决scheme将会更好。

谢谢

我认为你的架构是正确的。 您的问题归结于您的应用程序当前所在的应用程序状态之一。

如果您的应用程序被终止或者从未被打开过,那么application:didFinishLaunchingWithOptions的上述代码将被执行,但是,如果您的应用程序处于后台或挂起状态,则会调用以下方法。

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

因此,您还需要在应用程序委托中实现此function。

我希望这有帮助

你必须pipe理应用程序活跃或不活跃的条件

 UIApplicationState state = [application applicationState]; if (state == UIApplicationStateActive) { // Below Code Shows Message While Your Application is in Active State else { //for app recieving notification in background and tap on notification }