应用程序处于后台swift 3时远程推送通知

时间:2016-11-07 22:18:07

标签: ios iphone swift push-notification apple-push-notifications

我有一个接收远程推送通知的应用。 我已经以这种方式实施了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)进行发送推送通知

2 个答案:

答案 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正在工作