首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无声推送通知与普通推送通知

无声推送通知与普通推送通知
EN

Stack Overflow用户
提问于 2016-04-04 13:02:39
回答 1查看 1.4K关注 0票数 0

我从我的网页空间通过PHP推送通知到我的快速2应用程序。我这样做是为了:

代码语言:javascript
复制
$body['aps'] = array('alert' => 'HELLO', 'badge' => 1, 'sound' => 'default');

现在,我也想处理无声的推送通知。我明白了,我可以这样默默地推下去:

代码语言:javascript
复制
$body['aps'] = array('content-available' => 1);

在我的应用程序代表中,我在收到一个无声的推送后做了一些事情。

代码语言:javascript
复制
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {

   print("DO SOMETHING IN THE BACKGROUND")

    handler(UIBackgroundFetchResult.NewData)
  }
  return
}

这个很好用。但是现在的问题是,如果我也发出一个正常的推送,这个打印就会每次都来。

那是不对的。打印“在后台做一些事情”应该执行,只有当一个无声的推送将被接受。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-19 22:40:31

以下列方式修改代码:

代码语言:javascript
复制
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {

    if let apsValue = userInfo["aps"] as? NSDictionary {
        if (apsValue["content-available"] as? Int == 1){
           print("DO SOMETHING IN THE BACKGROUND")
           handler(UIBackgroundFetchResult.NewData)
        }

    }
return
}

现在,您的操作项每一次执行一次,但是上面的代码将过滤掉它,以便只在有静默推送时执行(正如您所知道的,这是由=1标志指示的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36403470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档