【问题标题】:didReceiveRemoteNotification is not being called in background mode until I do not tap on notification in ios在我没有点击 ios 中的通知之前,不会在后台模式下调用 didReceiveRemoteNotification
【发布时间】:2015-07-02 20:27:49
【问题描述】:

我已经搜索了几个小时,但在某个地方这么说,

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandlerNotification

被调用,无论应用程序处于活动状态还是非活动状态。它在某个地方说,当应用程序未处于活动状态时,它会推送通知调用您的didFinishLaunchingWithOptions,您可以在那里检测到这样的通知:

NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]`

在我的情况下,如果用户点击通知并且一切正常,两者都可以正常工作,但是当用户没有点击通知并从其图标直接打开应用程序时会出现问题,那么didFinishLaunchingWithOptions 既没有检测到通知也没有@ 987654325@ 接到电话。我需要将消息保存在数据库中,从推送通知收到,但没有点击通知如何调用方法?

【问题讨论】:

  • 尝试使用 - (void)applicationWillEnterForeground:(UIApplication *)application 方法..当用户直接点击应用程序图标时,它会明确调用,如果没有调用 didFinishLaunchingWithOptions 则它也会调用..跨度>
  • @Max 显然 didFinishLaunchingWithOptions 被调用,但它无法检测到是否收到推送通知
  • 对于该问题,您可以在 didFinishLaunchingWithOptions 中处理通知。

标签: ios iphone push-notification


【解决方案1】:

要在didFinishLaunchingWithOptions 中获取通知数据,请执行此代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

if(launchOptions != nil)
    {
        NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];

        if(remoteNotif != nil){

            [UIApplication sharedApplication].applicationIconBadgeNumber = [[[remoteNotif objectForKey:@"aps"] objectForKey: @"badge"] integerValue];

            //do something here to process notification



        }
    }
}

【讨论】:

  • 同样的问题。在我不点击通知之前,它不会检测到通知。
  • 是的,但您可以通过点击应用图标来处理它。当通知到达并且应用程序处于后台时,在您单击通知或应用程序之前不会触发任何操作。
  • 触发了点击通知动作,这很好,但是当我点击应用程序图标时,它什么也不做,无法处理您的代码,它不会进入 if
  • 然后在删除第一个 if 条件后检查。它是启动选项。
猜你喜欢
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 2020-06-18
  • 2021-05-02
  • 1970-01-01
相关资源
最近更新 更多