在WWDC 2013的"多任务新功能"演示中,有一节介绍了静默推送通知.这似乎是直截了当的.根据演示,如果您发送的APS有效负载仅将可用内容设置为1,用户将不会收到通知.

// A. This doesn't work
{ 
  aps: { 
          content-available: 1 
       }
}

我的测试显示这不起作用,因为没有收到推送.但是,如果我包括声音属性,但不包括警告属性,它就可以工作(虽然不再是静音).

// B. This works
{ 
  aps: {
          content-available: 1,
          sound: "default"
       }
}

但是,如果我将声音属性更改为播放silent音频,则可以模拟silent推送.

// C. This works too.
{ 
  aps: {
          content-available: 1,
          sound: "silence.wav"
       }
}

有没有人知道:

  1. 如果这是个窃听器?
  2. 假设B或C被视为远程通知(而不是需要声音属性的Silent Push的bug)是否正确呢?如果是这样的话,这意味着它不像silent推送那样受到费率限制.苹果很可能会解决这个问题.所以我可能不应该依赖它.
  3. 速率限制是多少(N每X秒推送一次,等等)?

提前谢谢.

Edit with more information

对于一个应用程序,应用程序的状态并不重要.从未收到通知.

似乎只有将属性和值括在引号中才能使用B和C,如下所示.

{"aps":{"content-available": 1, "sound":"silent.wav"}}

并且无论状态如何,通知在application:didReceiveRemoteNotification:fetchCompletionHandler:到达.

推荐答案

它也可以工作,到达时不会发出声音:

{
    aps = {
        "content-available" : 1,
        sound : ""
    };
}

EDIT

有这个问题的人可能想要判断this link个.我一直在参加苹果开发者论坛上的一个帖子,这个帖子覆盖了所有应用程序的状态,以及收到和没有收到静默推送的时间.

Ios相关问答推荐

如何让AVAudio.installTap()每秒回调125次

SwiftUI中ForEach和@ State数组的可能并发问题

部分保留 UITextField 中的占位符

uikit中如何触发swiftui功能

更新 flutter 和 xcode 后 Xcode 14.3 中缺少文件 (libarclite_iphoneos.a)

UIView 阴影不适用于自定义扩展

核心媒体基础知识,了解 CMSampleBuffer、CMBlockBuffer 和 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer

如何在 SwiftUI 中同时使用 LongPressGesture 和 ScrollView 中的滚动?

为什么常量属性可能在 Swift 类中被初始化两次?

iOS 如何使用 Alamofire 解析 JSON 可编码数组

SwiftUI 解除 .alert 弹出 NavigationView

Xcode 13.4.1 (13F100)Command CodeSign 失败,退出代码非零我应该删除哪个证书?

SwiftUI - 使用切换switch 切换键盘类型(默认/数字)?

如何在 SwiftUI 上制作可点击的map route?

无法同时满足约束 - 没有适当的约束

iOS - 确保在主线程上执行

针对 Xcode 中的 iPad 选项

~= Swift 中的运算符

swift 语言中的 null / nil

我可以在 UIScrollView 中使用 UIRefreshControl 吗?