iOS: 是否可以无声推送到通知中心?
iOS: Is it possible to send a push to Notification Center without a sound?
在 Android,我可以发送静默推送并传送到系统托盘。在 iOS,我不确定这是否可行。我从 aps
中删除了 alert
属性,并为 sound
发送了一个空字符串。我看到的是徽章计数静默更新(这很好),但通知中心没有任何内容。那么有没有办法无声无声地向NC发送推送呢?
请注意,我不希望推送在屏幕上弹出(即用户不应该看到它,除非他们在屏幕上向下滑动以显示已交付的内容。换句话说,我正在尝试匹配Android).
上的行为
是的,苹果支持,
推送数据格式为
{
"aps":{
"aa":"123",
"content-available":1
}
}
重要的关键是这个
"content-available":1
如果您不需要声音,请不要在有效负载中发送 sound
参数。
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 1
},
"acme1" : "test"
}
您还可以从 willPresent..
推入 appdelegate.swift
文件
的方法中删除 .alert
和 .sound
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
completionHandler([.badge]) //remove .sound, .alert
}
实现你想要做的事情的唯一方法是在请求设备上的通知权限时指定 "provisional",iOS >= 12 支持。这使得通知received 完全无声,只出现在通知中心,不会打扰用户。但是,用户可以自定义此权限并选择 "interrupted" 通知,此权限还将阻止 "interrupting" 用户收到所有其他通知。
如果你想有选择地指定一些通知只进入通知中心,而其他通知发出声音并显示为通知提醒用户,那么你的问题的答案是不,它不是可能。
我不确定我是否理解你的问题。但是如果你只是想向 iOS 发送静默通知,在后台唤醒应用程序并让它处理通知,这是可以做到的,参见 the docs.
本质上,你有
- 在Signing &中启用远程通知后台模式
目标的功能选项卡,以及
使用仅包含 content-available
键的 aps 字典创建远程通知:
{
"aps" : {
"content-available" : 1
},
"key1" : "xxx",
"key2" : 123
}
为了接收静默通知,系统会在后台唤醒您的应用。然后它会调用您的应用委托的 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
是的,只发送无声 key.If 你添加空白声音键,那么默认声音肯定会出现,所以不要添加没有声音的键。
在 Android,我可以发送静默推送并传送到系统托盘。在 iOS,我不确定这是否可行。我从 aps
中删除了 alert
属性,并为 sound
发送了一个空字符串。我看到的是徽章计数静默更新(这很好),但通知中心没有任何内容。那么有没有办法无声无声地向NC发送推送呢?
请注意,我不希望推送在屏幕上弹出(即用户不应该看到它,除非他们在屏幕上向下滑动以显示已交付的内容。换句话说,我正在尝试匹配Android).
上的行为是的,苹果支持, 推送数据格式为
{
"aps":{
"aa":"123",
"content-available":1
}
}
重要的关键是这个
"content-available":1
如果您不需要声音,请不要在有效负载中发送 sound
参数。
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 1
},
"acme1" : "test"
}
您还可以从 willPresent..
推入 appdelegate.swift
文件
.alert
和 .sound
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
completionHandler([.badge]) //remove .sound, .alert
}
实现你想要做的事情的唯一方法是在请求设备上的通知权限时指定 "provisional",iOS >= 12 支持。这使得通知received 完全无声,只出现在通知中心,不会打扰用户。但是,用户可以自定义此权限并选择 "interrupted" 通知,此权限还将阻止 "interrupting" 用户收到所有其他通知。
如果你想有选择地指定一些通知只进入通知中心,而其他通知发出声音并显示为通知提醒用户,那么你的问题的答案是不,它不是可能。
我不确定我是否理解你的问题。但是如果你只是想向 iOS 发送静默通知,在后台唤醒应用程序并让它处理通知,这是可以做到的,参见 the docs.
本质上,你有
- 在Signing &中启用远程通知后台模式 目标的功能选项卡,以及
使用仅包含
content-available
键的 aps 字典创建远程通知:{ "aps" : { "content-available" : 1 }, "key1" : "xxx", "key2" : 123 }
为了接收静默通知,系统会在后台唤醒您的应用。然后它会调用您的应用委托的 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
是的,只发送无声 key.If 你添加空白声音键,那么默认声音肯定会出现,所以不要添加没有声音的键。