当应用程序处于后台模式时获取通知

Posted

技术标签:

【中文标题】当应用程序处于后台模式时获取通知【英文标题】:Get notification when app is in background mode 【发布时间】:2015-09-14 10:16:06 【问题描述】:

我想在收到通知时调用一个函数,即使我的应用程序在后台

我在 *** 上发现了很多问题/答案 但在我身上却没有。所以我会解释我所做的一切

我开启了后台模式

here

我的 info.plist 很好

here

在我的 didFinishLaunchingWithOption 中我有

    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Badge | .Sound | .Alert, categories: nil))
    application.registerForRemoteNotifications()

我有

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 
    println("NOTIFICATION 4");


func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 
    println("NOTIFICATION FETCH");

但是当我发送通知时我看不到我的日志

我的通知是这样发送的

     deviceToken: XXXXX,
    expiration: 1442225011,
    identifier: 0,
    payload: 
     'content-available': '1',
    aps:  badge: 0, alert: 'Hello'   

我不知道该怎么做......我真的无法收到此通知,没有任何反应(我收到横幅但没有调用我的函数)

非常感谢

【问题讨论】:

【参考方案1】:

正如您在文档中看到的那样:

aps 字典也可以包含 content-available 属性。值为 1 的 content-available 属性让远程通知充当“静默”通知。

所以你应该在 aps 字典中插入 content-available,像这样:

 deviceToken: XXXXX,
expiration: 1442225011,
identifier: 0,
payload: 
 aps:  'content-available': '1', badge: 0, alert: 'Hello'   

【讨论】:

谢谢,没关系!但是......其他问题。我想在收到通知时运行计时器。但他不叫计时器……我该怎么办?谢谢 您有一个 30 秒或更短(我认为)的窗口来运行执行和获取数据所需的所有代码。据我所知,没有办法让应用程序继续运行。在这种情况下,您可能需要更改架构。

以上是关于当应用程序处于后台模式时获取通知的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于后台模式时,如何获得错过的 CloudKit 通知?

当应用程序处于终止状态时,iOS 静默推送通知不会收到

iOS:Objective -C如何在应用程序处于后台模式时更改推送通知声音有效负载?

在应用程序处于后台时获取本地通知

当应用程序处于后台时接收 Apple 推送通知

远程通知到达时哪个代表首先调用,而我的应用程序处于终止模式(不在后台)