我有一个接收远程推送通知的应用。
我已经以这种方式实施了didReceiveRemoteNotification
:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("PUSH NOTIFICATION is coming")
let state: UIApplicationState = UIApplication.shared.applicationState
let inBackground = state == .background
let dizionario = userInfo["aps"]! as! NSDictionary
let alert = dizionario["alert"]! as! String
print(alert)
if(!inBackground){
print("APP IN FOREGROUND")
//show alert view and the if user tap 'ok' show webview
}
else{
print("APP IS BACKGROUND")
//SHOW WEBVIEW
}
}
在这两种情况下(当应用程序处于前台和后台时)我必须显示webview,将子项添加到根视图(tabbar控制器),但如果app在前台,那么我必须先显示警报视图。
我的问题是,如果应用程序在前台我没有问题,但如果应用程序在后台didReceiveRemoteNotification
没有调用(我不会看到打印"推送通知即将到来")我不明白为什么。
你能帮助我吗?
N.B用于测试我使用APN Tester(https://itunes.apple.com/it/app/apn-tester-free/id626590577?mt=12)进行发送推送通知
答案 0 :(得分:0)
didReceiveRemoteNotification
用于在应用有效时使用。
当应用程序处于后台或处于非活动状态时,您可以通过按遥控器上的操作按钮来激活它。在您的应用代理中实施userNotificationCenter(_:didReceive:withCompletionHandler:)。
答案 1 :(得分:0)
在AppDelegate.swift中:
B1 = "=IF(B6>9,1,2)" , B2 = 3.6 , B3 = 5.1 , B4 = "=SUM(B1:B3)", B5 = "" , B6 = "=B2+3+SUM(B1:B6)*0.1"
didReceive 的意思是:当您的“应用程序”为“后台”时,您单击通知didReceive正在工作