我正在为iOS开发消息传递应用程序。
我保留用户'电话号码到服务器,但我不在后端保留联系人姓名。
当用户从服务器收到推送通知时,服务器会在通知有效负载中向用户发送电话号码和消息内容。我实现了 application:didReceiveRemoteNotification:fetchCompletionHandler 方法来显示本地通知。我在本地数据库中查找phoneContactName:phoneNumber对并以以下格式显示本地通知:%phoneContactName%:%messageContent%
然而,障碍是我现在还没有在应用程序未运行时如何执行此代码。我尝试实现应用程序:didFinishLaunchingWithOptions 并检查
NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
但不会调用此代码。
所以为了解决这个问题,我想问你应该使用什么样的架构模型。我应该在服务器端保留联系人姓名,以便从服务器端发送带有联系人姓名的notification.alert(到目前为止,我的服务器还不知道联系电话号码的名称),还是有任何方法可以执行代码该应用未运行?
P.S。此外,我在收到通知时计算客户端的徽章编号。因此,如果可能,代码执行解决方案会更好。
谢谢
答案 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
}