当应用程序被杀死(非活动)时,点击 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 推送通知?