ios - 悄悄地从我的服务器发送推送通知到我的应用程序

标签 ios objective-c ios7 push-notification apple-push-notifications

设置:我已经在我的服务器上成功部署了推送通知系统!也就是说,我能够向我的 iOS 设备发送通知,这些设备可以在网络服务器上发生某些事情时发送警报消息,例如:当新客户添加到系统时。

这会显示一条像这样的好消息

You have a new customer. More money baby!

当我的应用程序打开时,通知当然是无声的,只是自动为我更新客户表,所以我不必手动继续刷新我的表。

问题:从那时起,系统扩展了,现在我一直在我的设备上收到这样的消息,至少每小时几条,这让我很困扰。

我建议的解决方案是每次添加新用户时只更新我的表,因此这需要为每个创建的新用户发送推送通知,这很完美,但对于它不会像以前那样在我的通知中心显示消息。

问题:有没有一种方法可以静默发送推送通知,这样我的设备上就不会收到任何类似的消息,但是当应用程序运行时推送通知仍然会弹出这样我就可以更新用户界面而无需手动刷新客户的表格? 我的服务器发送的 json 推送通知的 body 参数是否只是留空的情况?

我不想要的:我不想下定决心必须从我自己的应用程序中隐藏通知 :')

最佳答案

您可以使用 iOS 7+ 的静默推送通知。

如果在您从服务器发送的负载中添加值为 1 的键“content-available”并删除键“alert”,您将收到推送但不会在屏幕上显示消息。

当您收到这种推送时,您将有 30 秒的执行时间*,这段时间可能足以刷新您的用户表,下次您打开应用程序时,您将获得最新的表数据。

系统会唤醒你的应用并调用方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler

在 AppDelegate.m 上

有效负载格式应该是:

{"aps":{"content-available":1}}

如果你想像角标(Badge)或额外的字典数据一样使用它,你也可以添加更多的字段,是可选的。

{"aps":{"content-available":1, "sound":"", "badge":1}}

如果出于某种原因您没有收到推送,请尝试添加“声音”:“”,这似乎是无声推送的错误。

*不要忘记,如果您或用户向上滑动应用程序并终止它,静默推送不会发生执行时间。

希望对你有用! :)

关于ios - 悄悄地从我的服务器发送推送通知到我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21650380/

相关文章:

ios - 语法解释 : square brackets in Swift

ios - Xcode 6 创建新的 Objective-C 类

objective-c - 在 cocoa 中读取、修改、写入xml文件

ios7 - 使用 iBeacon + Passbook 与使用地理围栏和推送通知相比,在帮助品牌建立客户关系方面有哪些优势?

ios - UISearchDisplayController 搜索栏不会关闭键盘?

ios - 尽管应用程序处于横向模式,但仍会调用 willHideViewController

ios - UITabBarController 中的 UINavigationController 中的 UITableView,不需要的底部工具栏

ios - NSoperationQueue阻塞主线程

ios - 在 IOS 中无法从 Google Drive 获取文件

ios - 在 ios 7 中以编程方式切换飞行模式