热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS11swift静态推送(后台提取,didReceiveRemoteNotification)不再起作用了

如何解决《iOS11swift静态推送(后台提取,didReceiveRemoteNotification)不再起作用了》经验,为你挑选了1个好方法。

我希望iOS11版本能解决无声推送问题,这是最新的测试版和通用版iOS版.

目前我很难理解,为什么我没有收到任何静音推送消息,这实际上应该唤醒我的应用程序以在后台执行一些所需的任务.

在iOS 10中,我只使用后台获取功能,并在我的AppDelegate中实现了"唤醒代码",如下面的代码所示.

在iOS 11中,注册代码仍然正常工作,我的后端也向Apples DEV服务器(沙箱)和PROD服务器(生产版本)提供推送通知.不幸的func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)是,静音推送通知从不调用该函数.

我真的错过了iOS 11的东西吗?


@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  // .. some variables here ...

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

       // register silent push notification in backend
       application.registerForRemoteNotifications()

       // ... some code here ... 


       // Set Background Fetch Intervall for background services / terminated app
       UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

       // ... some code here ... 

       return true
   }

   func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
       let tokenParts = deviceToken.map { data -> String in
           return String(format: "%02.2hhx", data)
       }
       let token = tokenParts.joined()
       logger.log.debug("Device Token: \(token)")

       let realm = RealmController()
       let user = realm.getLoggedInUserObject()

       // Send push token to server
       if let user = user {
           let email = user.email!

           let serverCOntroller= ServerController.serverController
           serverController.sendPushToken(token: token, email: email) { status in
               if status == 201 {
                // ... some code here ...
               } else {
               // ... some code here ...
               }
           }
       }
   }
   func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
       logger.log.debug(error)
   }
   func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
       logger.log.debug(userInfo)

       let aps = userInfo["aps"] as! [String: AnyObject]
       if aps["content-available"] as? Int == 1 {
          // .... some silent push tasks here ....
       }
   }
}

AlexWoe89.. 5

最终更新2017-10-31

Apple刚刚发布了iOS 11.1的官方(万圣节)版本

Apple发布软件更新于10月31日

更新2017-10-09

Apple今天发布了iOS11.1 beta 2.他们再次在发行说明中提到以下说明:

通知已解决的问题

更频繁地处理静默推送通知.(33278611)

我将再次测试此beta 2版本并更新此答案以获取您的信息.

更新 - 测试 - >在针对不同场景进行一些测试之后,这个错误似乎在最新的iOS11.1 beta 2版本中得到修复.现在我们只能等待正式发布.在一些论坛中,他们认为Apple将在10月底发布iOS11.1.


较旧的帖子

我上周调查了很多时间来寻找关于这个问题的答案.在阅读了苹果发行说明(包括已弃用,更改和新功能)后,我测试了以下情况:

我向我添加了空函数AppDelegate ,现在静音推送在前台和后台再次工作:

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        logger.log.debug("Perform Fetch with completion handler TEST")
    }

我不确定这个'解决方法'是否与问题有关,function application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)在iOS11中没有调用以下内容.

不过,如果你发现同样的行为,你可以尝试一下并给我反馈.

更新2017-09-25

"静音推送"现在在我的情况下在前台和后台模式下工作,但是,如果应用程序从用户或操作系统暂停,则不会.所以这个问题仍然是开放的,没有修复 - 任何帮助表示赞赏!有关更多信息,请参阅此主题: 在iOS 11上无法传送到应用程序的静音推送


更新2017-10-05

苹果公司几天前发布了iOS11.1测试版.他们在发行说明中提到了以下内容:

通知已解决的问题
更频繁地处理无提示推送通知.(33278611)

一些开发人员说该问题已通过此测试版得到修复,其他开发人员表示在某些情况下该问题仍然存在.现在,当Apple为客户推出iOS11.1时会很有趣.



1> AlexWoe89..:

最终更新2017-10-31

Apple刚刚发布了iOS 11.1的官方(万圣节)版本

Apple发布软件更新于10月31日

更新2017-10-09

Apple今天发布了iOS11.1 beta 2.他们再次在发行说明中提到以下说明:

通知已解决的问题

更频繁地处理静默推送通知.(33278611)

我将再次测试此beta 2版本并更新此答案以获取您的信息.

更新 - 测试 - >在针对不同场景进行一些测试之后,这个错误似乎在最新的iOS11.1 beta 2版本中得到修复.现在我们只能等待正式发布.在一些论坛中,他们认为Apple将在10月底发布iOS11.1.


较旧的帖子

我上周调查了很多时间来寻找关于这个问题的答案.在阅读了苹果发行说明(包括已弃用,更改和新功能)后,我测试了以下情况:

我向我添加了空函数AppDelegate ,现在静音推送在前台和后台再次工作:

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        logger.log.debug("Perform Fetch with completion handler TEST")
    }

我不确定这个'解决方法'是否与问题有关,function application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)在iOS11中没有调用以下内容.

不过,如果你发现同样的行为,你可以尝试一下并给我反馈.

更新2017-09-25

"静音推送"现在在我的情况下在前台和后台模式下工作,但是,如果应用程序从用户或操作系统暂停,则不会.所以这个问题仍然是开放的,没有修复 - 任何帮助表示赞赏!有关更多信息,请参阅此主题: 在iOS 11上无法传送到应用程序的静音推送


更新2017-10-05

苹果公司几天前发布了iOS11.1测试版.他们在发行说明中提到了以下内容:

通知已解决的问题
更频繁地处理无提示推送通知.(33278611)

一些开发人员说该问题已通过此测试版得到修复,其他开发人员表示在某些情况下该问题仍然存在.现在,当Apple为客户推出iOS11.1时会很有趣.


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
author-avatar
纯洁的老宁同志
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有