当应用程序被杀死(非活动)时,点击 Firebase 通知不起作用

Posted

技术标签:

【中文标题】当应用程序被杀死(非活动)时,点击 Firebase 通知不起作用【英文标题】:Tapping the Firebase notification is not work when app is killed(inactive) 【发布时间】:2017-03-29 06:11:09 【问题描述】:

我正在通过 ios Swift3 编写我的公司 iphone 应用程序。该应用程序有 3 个网页视图。当我的应用程序处于前台和后台时,Firebase 的通知运行良好。 Taping 时,我可以在 webview 中查看 URL 页面。当它处于非活动状态(杀死应用程序)时,我可以收到通知。但是当点击它时,我无法查看 URL 页面,默认情况下只能启动应用程序。请告诉我聪明的解决方案。

这是我的 AppDelegate 的一部分。

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 
    FIRMessaging.messaging().appDidReceiveMessage(userInfo)
    if let messageID = userInfo[gcmMessageIDKey] 
        print("Message ID: \(messageID)")
    
    print(userInfo)

    completionHandler(UIBackgroundFetchResult.newData)

    //notification tapping
    let openpUrl = userInfo["openURL"] as? String
    //let openpUrl = userInfo["openURL"] as? String
    if ((openpUrl?.range(of: "blog.naver.com")) != nil) 
        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "naverblogPushNotification"), object: userInfo)
    else
        if ((openpUrl?.range(of: "facebook.com")) != nil) 
            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "facebookPushNotification"), object: userInfo)
        else
            NotificationCenter.default.post(name: NSNotification.Name(rawValue: "inspotPushNotification"), object: userInfo)
        
    

以下是发送JASON

"aps":"alert":"Testing.. (40)","badge":1,"sound":"default", "openURL":"http://blog.naver.com/ins2020/22056541"

我尝试搜索该站点并关注它,但没有成功。我很感激你的回答。

【问题讨论】:

我认为您应该在应用程序终止后再次启动时处理 appdelegate 中的通知if #available(iOS 10.0, *) if let info = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [AnyHashable:Any] // handleNotification with info 您的意思是您的代码将在“didFinishLaunchingWithOptions”中? 是的 .. 就在 didFinishLaunchingWithOptions 中 我已经在“didFinishLaunchingWithOptions”中尝试过您的代码。但我很抱歉点击是行不通的。结果相同。 【参考方案1】:

每当用户点击通知时。它可能在

UIApplicationStateActive

UIApplicationStateBackground

UIApplicationStateInactive

状态正确处理每种情况,您的问题就会得到解决。

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

            if(a    
pplication.applicationState == UIApplicationStateActive) 

            //app is currently active

        else if(application.applicationState == UIApplicationStateBackground)

            //app is in background

        else if(application.applicationState == UIApplicationStateInactive)

            //app is transitioning from background to foreground (user taps notification), do what you need when user taps here



           // Add your code to navigate to viewcontroller here..

        

【讨论】:

我已通过 Swift (UIApplicationState.inactive) 更改了您的代码。很抱歉,它不适用于 INACTIVE。但背景和活动是可以的。结果相同。无论如何我没有得到解决方案......

以上是关于当应用程序被杀死(非活动)时,点击 Firebase 通知不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序在后台或在本机反应中被杀死时,是不是可以检查用户的移动活动?

当应用程序进程被终止时,请勿打开上一个活动

当 iOS 应用程序被暂停/杀死并且用户点击通知时如何处理 Firebase 推送通知?

如何在活动的 onSaveInstanceState() 之后杀死所有打开的片段

xamarin 更新标签被更改为不同的活动而被杀死

Android 8.0+ 深度链接仅在应用程序被杀死时才首先打开启动器活动