设置:我已成功在我的服务器上部署了推送通知系统!话虽这么说,我能够向我的iOS设备发送通知,这些通知可以在网络服务器上发生某些事情时发送警报消息,例如:将新客户添加到系统时。
这会显示一条很好的消息
你有一个新客户。更多钱宝贝!
当我的应用程序打开时,通知当然是无声的,但只是为我自动更新customers表,所以我不必手动保持刷新表。
问题:从那时起,系统已经扩大规模,现在我每小时都会收到这样的消息至少几个小时,这让我感到困扰。
我建议的解决方案只是每次添加新用户时都会更新我的表,因此这需要为每个创建的新用户发送推送通知,这是完美的,但对于它不像以前那样在我的通知中心上显示消息。
问题:有没有办法静默发送推送通知,这样我就不会在我的设备上收到任何类似的消息,但是当应用程序运行时推送通知仍然会弹出这样我就可以更新UI而无需手动刷新客户的表格? 是否只是留下从我的服务器发送的json推送通知的空白主体参数?
我不想要的内容:我不想解决从我自己的应用程序隐藏通知的问题:')
答案 0 :(得分:5)
您可以使用iOS 7 +的静音推送通知。
如果进入从服务器发送的有效负载,则添加值为“content-available”的值为1并删除“alert”键,您将获得推送但没有在屏幕上显示消息。
当您收到此类推送时,您将有30秒的执行时间*,时间足以刷新您的用户表,下次打开应用程序时,您将拥有最新的表数据。
系统会唤醒您的应用并调用方法
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
AppDelegate.m上的
格式有效负载应为:
{"aps":{"content-available":1}}
如果您想要使用徽章或额外的词典数据,也可以添加更多字段,这些都是可选项。
{"aps":{"content-available":1, "sound":"", "badge":1}}
如果由于某种原因你没有得到推动尝试添加“声音”:“”,似乎可能是一个无声推动的错误。
*不要忘记,如果您或使用者向上滑动应用程序并终止应用程序,则不会因静音推送而导致执行时间。
我希望这对你有用! :)
答案 1 :(得分:1)
根据"Local and Push Notification Programming Guide",aps词典包含指定以下操作的一个或多个属性:
因此,您只能发送包含徽章计数的通知。有效载荷会 看起来就像
{
"aps" : {
"badge" : 9
}
}
答案 2 :(得分:0)
这里是格式
/*
aps =
{
Name = "";
alert = "Testing";
price = 0;
//sound = default;//do not send it from server
type = add;
};
*/
答案 3 :(得分:0)
在swift中获取远程通知
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
{
if let aps = userInfo["aps"] as? NSDictionary {
var message = aps["alert"]
println("my messages : \(message)")
}
}