我正在为iOS开发消息传递应用程序。
我将用户的电话号码保留在服务器上,但不在后端保留联系人姓名。
当用户收到来自服务器的推送通知时,服务器会在通知有效负载中向用户发送电话号码和消息内容。我实现了应用程序:didReceiveRemoteNotification:fetchCompletionHandler方法来显示本地通知。我在本地数据库中查找电话联系人姓名:电话号码对,并以以下格式显示本地通知:%电话联系人姓名%:%消息内容%
但是,障碍是我现在不知道如何在应用程序未运行时执行此代码。我尝试实现应用程序:didFinishLaunchingWithOptions并在那里检查
NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
但不调用此代码。
所以为了解决这个问题,我想问你我应该使用什么架构模型。我应该在服务器端保留联系人姓名以使用联系人姓名从服务器端发送通知.alert(到目前为止,我的服务器不知道联系人电话号码的名称),还是在应用程序未运行时执行代码?
附言此外,我在收到通知时计算客户端的徽章编号。因此,如果可能的话,代码执行解决方案会更好。
谢谢
我认为你的架构是正确的。您的问题归结为您的应用当前所处的应用状态之一。
如果您的应用已终止或从未打开,则将执行上述 application:didFinishLaunchingWithOptions
中的代码,但是,如果您的应用处于后台或挂起状态,则将调用以下方法。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo`
因此,您还需要在应用委托中实现这一点。
我希望这有帮助
您必须管理应用程序处于活动状态或非活动状态的条件,例如
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
}