从我的服务器静默发送推送通知到我的应用程序

时间:2014-02-08 18:54:57

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

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

这会显示一条很好的消息

  

你有一个新客户。更多钱宝贝!

当我的应用程序打开时,通知当然是无声的,但只是为我自动更新customers表,所以我不必手动保持刷新表。

问题:从那时起,系统已经扩大规模,现在我每小时都会收到这样的消息至少几个小时,这让我感到困扰。

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

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

我不想要的内容:我不想解决从我自己的应用程序隐藏通知的问题:')

4 个答案:

答案 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)")

        }
     }