【问题标题】:Executing background task upon receiving Remote Notifications(Silent Push) on iOS 7在 iOS 7 上接收远程通知(静默推送)时执行后台任务
【发布时间】:2014-07-22 14:26:41
【问题描述】:

我目前正在构建一个应用程序,该应用程序利用 iOS 7 的静默推送通知来根据请求在后台唤醒应用程序。

正如我在-applicationDidEnterBackground: 中所做的那样,我在-application:didReceiveRemoteNotification:fetchCompletionHandler: 中启动了一个后台任务,如下所示:

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

{

    self.taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

        [[UIApplication sharedApplication] endBackgroundTask:self.taskId];

        self.taskId = UIBackgroundTaskInvalid;



        completionHandler(UIBackgroundFetchResultNewData);

    }];

}

虽然应用程序成功注册远程通知并在通知到达时调用-application:didReceiveRemoteNotification:fetchCompletionHandler:,但应用程序在返回挂起状态之前仅在后台停留几秒钟,比给定的预期执行时间短得多(在-applicationDidEnterBackground: 中调用时) ) 我相信大约需要 3 分钟。

这是预期的行为吗?还是不能使用远程通知?

【问题讨论】:

标签: ios ios7 apple-push-notifications multitasking backgrounding


【解决方案1】:

您是否正确配置了 plist?

  1. 您需要告诉 iOS 您是一个远程通知应用,并且您在暂停时请求额外的周期。
  2. UIBackgroundModes 有待批准

来自documentation

应用的背景模式UIBackgroundModes 值 = remote-notification

应用想要在推送通知到达时开始下载内容。使用此通知可以最大限度地减少显示与推送通知相关的内容的延迟。

【讨论】:

    猜你喜欢
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多