我在这里看到了很多与此问题有关的问题,但没有一个能准确回答这个问题。
是否可以检查用户是否通过单击推送通知打开了应用程序,还是通过用户单击主页上的应用程序图标来打开应用程序。我需要我的代码针对不同的场景做不同的事情。
许多人一直在说使用didReceiveRemoteNotification,它只检查是否已收到通知。通知是否被推送都没关系。
答案 0 :(得分:2)
要查看应用程序的启动方式,请在应用程序(_:didFinishLaunchingWithOptions :)中检查launchOptions键。例如
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if let keys = launchOptions?.keys {
if keys.contains(.location) {
NSLog("Launched due to location update");
} else if keys.contains(.remoteNotification) {
NSLog("Launched due to remote notification");
}
} else {
NSLog("Launched manually");
}
}
有关更多详细信息,请阅读https://developer.apple.com/documentation/uikit/app_and_environment/responding_to_the_launch_of_your_app#2922740上的Apple官方文档