Error[8]: Undefined offset: 8, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在实现一个警报,我从服务器获取pushNotification,我收到完美的推送通知,它在前台模式下工作正常,但当应用程序进入后台时,它只获得推送通知,但没有加载我要加载的视图 请查看下面的代码 func registerForPushNotifications(application: UIApplication) { let notificationSettings = UIUse 我正在实现一个警报,我从服务器获取pushNotification,我收到完美的推送通知,它在前台模式下工作正常,但当应用程序进入后台时,它只获得推送通知,但没有加载我要加载的视图

请查看下面的代码

func registerForPushNotifications(application: UIApplication) {    let notificationSettings = UIUserNotificationSettings(        forTypes: [.Badge,.sound,.Alert],categorIEs: nil)    application.registerUserNotificationSettings(notificationSettings)}

此方法从dIDFinishLaunchingWithOptions调用

func application(application: UIApplication,dIDRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {    if notificationSettings.types != .None {        application.registerForRemoteNotifications()    }}func application(application: UIApplication,dIDRegisterForRemoteNotificationsWithDevicetoken devicetoken: NSData) {    let tokenChars = UnsafePointer<CChar>(devicetoken.bytes)    var tokenString = ""    for i in 0..<devicetoken.length {        tokenString += String(format: "%02.2hhx",arguments: [tokenChars[i]])    }    NSUserDefaults.standardUserDefaults().setobject(tokenString,forKey: "devicetoken")}

这是最后的方法

func application(application: UIApplication,dIDReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {        print(userInfo)        let storyboard = UIStoryboard(name: "Main",bundle: nil)        let navigationController = storyboard.instantiateVIEwControllerWithIDentifIEr("AlarmDetailsController") as! AlarmDetailsController        //let dVC:AlarmDetailsController = navigationController.topVIEwController as! AlarmDetailsController        navigationController.isPushNotification = true        self.window?.rootVIEwController?.presentVIEwController(navigationController,animated: true,completion: {})        }

请帮助我解决这个问题记住我的应用程序在前台模式下工作正常

解决方法 1.首先你应该在应用程序“功能”中启用后台提取
2.然后在app delegate中使用以下代码

在AppDelegate类中添加以下代码:

func application(_ application: UIApplication,dIDReceiveRemoteNotification userInfo: [AnyHashable: Any],fetchCompletionHandler completionHandler: @escaPing (UIBackgroundFetchResult) -> VoID) {       // print(userInfo)let vc = mainStoryBoard.instantiateVIEwController(withIDentifIEr: "destinationVC") as! destinationVC                            self.visibleNavController.pushVIEwController(vc,animated: true)    }

对于iOS 10,请使用以下代码:
1,引进

import UserNotifications

用于前景提取

@available(iOS 10.0,*)        func userNotificationCenter(_ center: UNUserNotificationCenter,willPresent notification: UNNotification,withCompletionHandler completionHandler: @escaPing (_ options: UNNotificationPresentationoptions) -> VoID) {            var userInfo = NSDictionary()            userInfo = notification.request.content.userInfo as NSDictionary            let pay = userInfo as NSDictionary   let driverLocationVC = mainStoryBoard.instantiateVIEwController(withIDentifIEr: "destinationVC") as! destinationVC                                self.visibleNavController.pushVIEwController(driverLocationVC,animated: true)    }

为背景

@available(iOS 10.0,*)    func userNotificationCenter(_ center: UNUserNotificationCenter,dIDReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaPing () -> VoID) {        print("Userinfo \(response.notification.request.content.userInfo)")        var userInfo = NSDictionary()        userInfo = response.notification.request.content.userInfo as NSDictionary        print(userInfo)    let driverLocationVC = mainStoryBoard.instantiateVIEwController(withIDentifIEr: "DriverLocationVC") as! DriverLocationVC                            self.visibleNavController.pushVIEwController(driverLocationVC,animated: true)}

用于设备令牌提取

func application(_ application: UIApplication,dIDRegisterForRemoteNotificationsWithDevicetoken devicetoken: Data) {        let tokenString = devicetoken.reduce("",{[+++] + String(format: "%02X",)})        print("Got token data! \(tokenString)")        UserDefaults.standard.set(tokenString,forKey: "device_token")        UserDefaults.standard.synchronize()    }
总结

以上是内存溢出为你收集整理的ios – 如何在应用程序处于后台时打开特定视图控制器on didReceiveRemoteNotification全部内容,希望文章能够帮你解决ios – 如何在应用程序处于后台时打开特定视图控制器on didReceiveRemoteNotification所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
ios – 如何在应用程序处于后台时打开特定视图控制器on didReceiveRemoteNotification_app_内存溢出

ios – 如何在应用程序处于后台时打开特定视图控制器on didReceiveRemoteNotification

ios – 如何在应用程序处于后台时打开特定视图控制器on didReceiveRemoteNotification,第1张

概述我正在实现一个警报,我从服务器获取pushNotification,我收到完美的推送通知,它在前台模式下工作正常,但当应用程序进入后台时,它只获得推送通知,但没有加载我要加载的视图 请查看下面的代码 func registerForPushNotifications(application: UIApplication) { let notificationSettings = UIUse 我正在实现一个警报,我从服务器获取pushNotification,我收到完美的推送通知,它在前台模式下工作正常,但当应用程序进入后台时,它只获得推送通知,但没有加载我要加载的视图

请查看下面的代码

func registerForPushNotifications(application: UIApplication) {    let notificationSettings = UIUserNotificationSettings(        forTypes: [.Badge,.sound,.Alert],categorIEs: nil)    application.registerUserNotificationSettings(notificationSettings)}

此方法从dIDFinishLaunchingWithOptions调用

func application(application: UIApplication,dIDRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {    if notificationSettings.types != .None {        application.registerForRemoteNotifications()    }}func application(application: UIApplication,dIDRegisterForRemoteNotificationsWithDevicetoken devicetoken: NSData) {    let tokenChars = UnsafePointer<CChar>(devicetoken.bytes)    var tokenString = ""    for i in 0..<devicetoken.length {        tokenString += String(format: "%02.2hhx",arguments: [tokenChars[i]])    }    NSUserDefaults.standardUserDefaults().setobject(tokenString,forKey: "devicetoken")}

这是最后的方法

func application(application: UIApplication,dIDReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {        print(userInfo)        let storyboard = UIStoryboard(name: "Main",bundle: nil)        let navigationController = storyboard.instantiateVIEwControllerWithIDentifIEr("AlarmDetailsController") as! AlarmDetailsController        //let dVC:AlarmDetailsController = navigationController.topVIEwController as! AlarmDetailsController        navigationController.isPushNotification = true        self.window?.rootVIEwController?.presentVIEwController(navigationController,animated: true,completion: {})        }

请帮助我解决这个问题记住我的应用程序在前台模式下工作正常

解决方法 1.首先你应该在应用程序“功能”中启用后台提取
2.然后在app delegate中使用以下代码

在AppDelegate类中添加以下代码:

func application(_ application: UIApplication,dIDReceiveRemoteNotification userInfo: [AnyHashable: Any],fetchCompletionHandler completionHandler: @escaPing (UIBackgroundFetchResult) -> VoID) {       // print(userInfo)let vc = mainStoryBoard.instantiateVIEwController(withIDentifIEr: "destinationVC") as! destinationVC                            self.visibleNavController.pushVIEwController(vc,animated: true)    }

对于iOS 10,请使用以下代码:
1,引进

import UserNotifications

用于前景提取

@available(iOS 10.0,*)        func userNotificationCenter(_ center: UNUserNotificationCenter,willPresent notification: UNNotification,withCompletionHandler completionHandler: @escaPing (_ options: UNNotificationPresentationoptions) -> VoID) {            var userInfo = NSDictionary()            userInfo = notification.request.content.userInfo as NSDictionary            let pay = userInfo as NSDictionary   let driverLocationVC = mainStoryBoard.instantiateVIEwController(withIDentifIEr: "destinationVC") as! destinationVC                                self.visibleNavController.pushVIEwController(driverLocationVC,animated: true)    }

为背景

@available(iOS 10.0,*)    func userNotificationCenter(_ center: UNUserNotificationCenter,dIDReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaPing () -> VoID) {        print("Userinfo \(response.notification.request.content.userInfo)")        var userInfo = NSDictionary()        userInfo = response.notification.request.content.userInfo as NSDictionary        print(userInfo)    let driverLocationVC = mainStoryBoard.instantiateVIEwController(withIDentifIEr: "DriverLocationVC") as! DriverLocationVC                            self.visibleNavController.pushVIEwController(driverLocationVC,animated: true)}

用于设备令牌提取

func application(_ application: UIApplication,dIDRegisterForRemoteNotificationsWithDevicetoken devicetoken: Data) {        let tokenString = devicetoken.reduce("",{ + String(format: "%02X",)})        print("Got token data! \(tokenString)")        UserDefaults.standard.set(tokenString,forKey: "device_token")        UserDefaults.standard.synchronize()    }
总结

以上是内存溢出为你收集整理的ios – 如何在应用程序处于后台时打开特定视图控制器on didReceiveRemoteNotification全部内容,希望文章能够帮你解决ios – 如何在应用程序处于后台时打开特定视图控制器on didReceiveRemoteNotification所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1059524.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存