程序未运行的时候收到推送通知
在程序未运行的时候,点击推送通知栏通知,需要在didFinishLaunchingWithOptions里面处理
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.registerForRemoteNotifications() //注册
//申请推送权限
if #available(iOS 10.0, *){
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]){ granted, error in
if error != nil {
print(error.debugDescription)
}
}
UNUserNotificationCenter.current().delegate = self
} else{
UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.alert, .badge, .sound] , categories: nil))
}
//点击推送通知栏通知,进来之后 处理数据,
if let userInfo = launchOptions?[.remoteNotification] as? [AnyHashable: Any] {
print(userInfo)
//处理数据,这个userInfo与didReceiveRemoteNotification 方法内的 userInfo内容一致.
//比如跳转页面,或者进行一些存储等处理.
}
}
程序启动过程中,或者程序挂起状态下
如果在程序启动过程中,或者程序挂起状态下,需要到application的代理方法内处理
//打印收到的apns信息
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void){
print("userInfo")
//比如发送通知,或者app内部弹框告知有消息等处理. !!!注意,程序启动的时候,有通知,也会走这个方法
NotificationCenter.default.post(name: Notification.Name(rawValue: "RefreshMessages"), object: nil, userInfo: nil)
completionHandler(.newData)
}
如果我的文章对你有帮助,请给我一个哦~~!