静音推送仅在第二次推送到达时才正常工作(后台应用程序)

吴buck

当应用程序在前台运行时,静默推送通知可以正常工作

2016-12-26 15:06:17.793051 App[] didReceive in BG!!!
2016-12-26 15:06:17.932569 App[] Connected!
2016-12-26 15:06:17.936581 App[] Subscribed!
2016-12-26 15:06:17.938355 App[] received:Hello World , in:/topic/state

当应用在后台运行时,它将卡住

2016-12-26 15:06:22.674577 App[] applicationWillResignActive
2016-12-26 15:06:23.228441 App[] applicationDidEnterBackground

第一个无声推送到达,它停留在这里:

2016-12-26 15:06:30.642825 App[] didReceive in BG!!! //first push code
2016-12-26 15:06:31.842432 App[] Connected!  //first push code
2016-12-26 15:06:31.843643 App[] Subscribed!  //first push code

当第二次无声推送到达时,它显示第一个推送结果。并再次卡住.....

2016-12-26 15:06:41.713718 App[] received:Hello World , in:/topic/state  //first push result
2016-12-26 15:06:41.740015 App[] didReceive in BG!!!  //second push
2016-12-26 15:06:42.911593 App[] Connected!  //second push
2016-12-26 15:06:42.913403 App[] Subscribed!  //second push

我在Appdelegate中的实现代码

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    NSLog("didReceive in BG!!!" )
    application.delegate = self
    mqttSession = MQTTSession(host: "192.168.159.110", port: 1883, clientID: "swift", cleanSession: true, keepAlive: 5, useSSL: false)
    mqttSession.username = "bucky"
    mqttSession.password = "bucky"
    mqttSession.delegate = self

        mqttSession.connect { (succeeded, error) -> Void in
            if succeeded {
                NSLog("Connected!")

            }
        }
    completionHandler(.newData)
}

MQTT委托方法

func mqttDidReceive(message data: Data, in topic: String, from session: MQTTSession) {
    let stringData = String(data: data, encoding: .utf8)
    NSLog("received:%@ , in:%@", stringData ?? "12345", topic)                        
    }
}
加百列

当您完成参加通知时,必须调用completionHandler(),但是您要立即调用它。您最好在mqttDidReceive和错误委托方法中对其进行callint。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS应用程序无法在iPad / iPhone Safari上加载(仅在刷新页面/第二次加载之后才可用)

来自分类Dev

片段第二次打开时,应用程序强制关闭

来自分类Dev

应用程序在第二次启动时显示黑屏(在调用onDestroy之后)

来自分类Dev

第二次单击UITableView时,应用程序崩溃

来自分类Dev

Android应用仅在第二次运行后才显示listview

来自分类Dev

目标C:仅在第二次选择时才触发UIDatePicker UIControlEventValueChanged

来自分类Dev

UITableView仅在第二次尝试时才重新加载数据

来自分类Dev

当应用程序第二次启动时显示第二个 ViewController

来自分类Dev

MS Word 应用程序退出事件仅在 Word 2007 上第二次后触发

来自分类Dev

TranslateTransition第二次将无法正常工作

来自分类Dev

应用程序第二次启动时,MyApplication.java 没有运行?

来自分类Dev

复制项目仅在第二次运行脚本时才可用于子目录

来自分类Dev

第二次运行线程使应用程序崩溃

来自分类Dev

应用程序第二次运行时拒绝访问文件

来自分类Dev

如何在Android应用程序中单击按钮的第二次

来自分类Dev

第二次打开应用程序时执行操作

来自分类Dev

删除行应用程序脚本仅第二次通过

来自分类Dev

当我第二次启动应用程序时标签消失

来自分类Dev

第二次工作时锁定文件

来自分类Dev

第二次推送时具有自定义比较器分段错误的优先级队列

来自分类Dev

为什么checkout -b仅在第二次尝试后才起作用?

来自分类Dev

仅在第二次单击ListPreference之后才刷新EditTextPreference值

来自分类Dev

为什么WebRTC仅在第二次报价后才建立连接?

来自分类Dev

排序功能仅在第二次更改事件后才激活

来自分类Dev

为什么WebRTC仅在第二次报价后才建立连接?

来自分类Dev

仅在第二次尝试后才显示键盘

来自分类Dev

ScrollView仅在视图第二次出现时才开始滚动

来自分类Dev

Boostrap-Popover仅在第二次点击后才被触发

来自分类Dev

自删除按钮仅在第二次单击后才起作用。为什么?

Related 相关文章

  1. 1

    AngularJS应用程序无法在iPad / iPhone Safari上加载(仅在刷新页面/第二次加载之后才可用)

  2. 2

    片段第二次打开时,应用程序强制关闭

  3. 3

    应用程序在第二次启动时显示黑屏(在调用onDestroy之后)

  4. 4

    第二次单击UITableView时,应用程序崩溃

  5. 5

    Android应用仅在第二次运行后才显示listview

  6. 6

    目标C:仅在第二次选择时才触发UIDatePicker UIControlEventValueChanged

  7. 7

    UITableView仅在第二次尝试时才重新加载数据

  8. 8

    当应用程序第二次启动时显示第二个 ViewController

  9. 9

    MS Word 应用程序退出事件仅在 Word 2007 上第二次后触发

  10. 10

    TranslateTransition第二次将无法正常工作

  11. 11

    应用程序第二次启动时,MyApplication.java 没有运行?

  12. 12

    复制项目仅在第二次运行脚本时才可用于子目录

  13. 13

    第二次运行线程使应用程序崩溃

  14. 14

    应用程序第二次运行时拒绝访问文件

  15. 15

    如何在Android应用程序中单击按钮的第二次

  16. 16

    第二次打开应用程序时执行操作

  17. 17

    删除行应用程序脚本仅第二次通过

  18. 18

    当我第二次启动应用程序时标签消失

  19. 19

    第二次工作时锁定文件

  20. 20

    第二次推送时具有自定义比较器分段错误的优先级队列

  21. 21

    为什么checkout -b仅在第二次尝试后才起作用?

  22. 22

    仅在第二次单击ListPreference之后才刷新EditTextPreference值

  23. 23

    为什么WebRTC仅在第二次报价后才建立连接?

  24. 24

    排序功能仅在第二次更改事件后才激活

  25. 25

    为什么WebRTC仅在第二次报价后才建立连接?

  26. 26

    仅在第二次尝试后才显示键盘

  27. 27

    ScrollView仅在视图第二次出现时才开始滚动

  28. 28

    Boostrap-Popover仅在第二次点击后才被触发

  29. 29

    自删除按钮仅在第二次单击后才起作用。为什么?

热门标签

归档