iOS推送通知代码在接收时执行

时间:2015-03-10 10:33:35

标签: ios push-notification apple-push-notifications

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

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

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

然而,障碍是我现在还没有在应用程序未运行时如何执行此代码。我尝试实现应用程序:didFinishLaunchingWithOptions 并检查

NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

但不会调用此代码。

所以为了解决这个问题,我想问你应该使用什么样的架构模型。我应该在服务器端保留联系人姓名,以便从服务器端发送带有联系人姓名的notification.alert(到目前为止,我的服务器还不知道联系电话号码的名称),还是有任何方法可以执行代码该应用未运行?

P.S。此外,我在收到通知时计算客户端的徽章编号。因此,如果可能,代码执行解决方案会更好。

谢谢

2 个答案:

答案 0 :(得分:0)

我认为您的架构是正确的。您的问题归结为您的应用当前所处的某个应用状态。

如果您的应用已终止或从未打开过,那么application:didFinishLaunchingWithOptions中的上述代码将被激活,但是,如果您的应用处于后台或暂停状态,则会调用以下方法。

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

因此,您还需要在app delegate中实现此功能。

我希望这会有所帮助

答案 1 :(得分:-1)

您必须管理应用有效或无效的条件,如

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
}