在应用程序未运行时处理推送通知(应用程序被杀死)

Posted

技术标签:

【中文标题】在应用程序未运行时处理推送通知(应用程序被杀死)【英文标题】:Handling push notifications when app is not running (App is Killed) 【发布时间】:2014-11-13 08:59:32 【问题描述】:

我的问题似乎与this one 重复,但事实并非如此。当应用程序被杀死并且没有在后台运行时,如果我收到推送通知并单击通知横幅,它工作正常。 “userInfo”不为空,应用程序处理通知。 但是如果我关闭通知横幅并通过单击应用程序图标打开应用程序,则此“userInfo”返回 nil。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions 
    NSDictionary* userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if(userInfo != nil)
        //Handling notification

    

还有

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
    if([application applicationState] == UIApplicationStateActive)    
         NSLog(@"...1");
    
    else if([application applicationState] == UIApplicationStateInactive)
         NSLog(@"...2");
    
    else if([application applicationState] == UIApplicationStateBackground)
         NSLog(@"...2");

    
    completionHandler(UIBackgroundFetchResultNoData);

有没有办法处理这些通知,还是我应该自己处理?

【问题讨论】:

【参考方案1】:

没有,您的应用只会收到用于打开/启动您的应用的通知。

无法检测到您的应用的通知中心是否有任何通知。您需要自己在您的应用服务器中构建它。

【讨论】:

应该说推送通知在发出的时候可以调用自定义的URL schema。因此,当您配置推送通知时,您可以有不同的架构结尾,然后应用程序可以使用这些架构来执行不同的功能。 @onurvarrrr @Dan 这是真的,但只有在用户打开推送通知或静默推送(获取)通知时才会调用 URL。

以上是关于在应用程序未运行时处理推送通知(应用程序被杀死)的主要内容,如果未能解决你的问题,请参考以下文章

应用程序被终止时未收到推送通知 - iOS

应用程序未运行时的远程推送通知崩溃

使用firebase发送静默推送通知,以便在应用程序被杀死时唤醒它

react native - 应用程序被杀死/未启动时未收到通知

远程推送通知

当应用程序被杀死Android时无法接收解析推送通知