我需要知道我的应用是通过与推送通知的互动来实现的,还是通过用户点击应用手动来实现的。
如果您手动从后台打开应用“applicationWillEnterForeground”。 如果您通过推送通知从后台打开应用,则会调用“applicationWillEnterForeground”,然后是“didReceiveRemoteNotification”。
现在我想在应用委托内部向我的后端发出一个alamofire请求,每当我确定它是否因为推送而被打开时(统计数据,用户是否与我们的推送消息进行交互)。
在我列出的所有内容之后是否有一个方法被调用?如果是这样我可以在那个位置检查它是否是推动并将其发送出去。或者有更好的方法来解决这个问题吗?
答案 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
之前要弄清楚它是否是通过推动打开的。