检测是否从Background Swift iOS打开了应用程序

时间:2017-02-06 14:09:01

标签: ios swift apple-push-notifications appdelegate uiapplicationdelegate

我需要知道我的应用是通过与推送通知的互动来实现的,还是通过用户点击应用手动来实现的。

如果您手动从后台打开应用“applicationWillEnterForeground”如果您通过推送通知从后台打开应用,则会调用“applicationWillEnterForeground”,然后是“didReceiveRemoteNotification”

现在我想在应用委托内部向我的后端发出一个alamofire请求,每当我确定它是否因为推送而被打开时(统计数据,用户是否与我们的推送消息进行交互)。

在我列出的所有内容之后是否有一个方法被调用?如果是这样我可以在那个位置检查它是否是推动并将其发送出去。或者有更好的方法来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

当应用在后台时,您可以通过" didReceiveRemoteNotification" 处理通知。

如果它根本没有运行且用户通过单击通知横幅启动它,则必须检查启动选项:

    if let launchOptions = launchOptions {
        if let notificationInfo = launchOptions[UIApplicationLaunchOptionsKey.remoteNotification] as? [AnyHashable : Any] {
            // Handle notificationInfo
        }
    }

方法"应用程序(_应用程序:UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:Any]?)" 在AppDelegate中。

答案 1 :(得分:0)

找到后来被称为的东西:

func applicationDidBecomeActive(_ application: UIApplication)

在这里,我可以使用

将请求发送到我的后端
didReceiveRemoteNotification

之前要弄清楚它是否是通过推动打开的。