• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 当应用程序未运行时,通过静默推送通知在后台更新本地数据库

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:06:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

是否可以在用户无需点击通知(通知中心没有通知,因为它是静默推送通知)。 该应用程序根本没有运行(例如,用户强制退出)。我已经尝试了下面的代码,如果应用程序正在运行或在后台运行,它可以工作,但如果应用程序被强制退出(根本不运行),我也希望它工作。

我已启用后台获取和远程通知。

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
    handleNotification()
}

//this works, the someData is not a problem
func handleNotification() -> Void{
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setValue(someData, forKey: "key")
    defaults.synchronize()
}

当我发送推送通知时,如果应用程序处于事件状态或在后台,数据会更新,但如果应用程序根本没有运行,则数据不会更新。



Best Answer-推荐答案


简答:当应用强制退出(未运行)时,如果没有用户交互,(几乎)无法做任何事情。

解释见文档:

  • Handling Remote Notifications - application:didReceiveRemoteNotification:fetchCompletionHandler :

    Use this method to process incoming remote notifications for your app. Unlike the application:didReceiveRemoteNotification: method, which is called only when your app is running in the foreground, the system calls this method when your app is running in the foreground or background. In addition, if you enabled the remote notifications background mode, the system launches your app (or wakes it from the suspended state) and puts it in the background state when a remote notification arrives. However, the system does not automatically launch your app if the user has force-quit it. In that situation, the user must relaunch your app or restart the device before the system attempts to launch your app automatically again.

  • Understanding When Your App Gets Launched into the Background :

    Apps that support background execution may be relaunched by the system to handle incoming events. If an app is terminated for any reason other than the user force quitting it, the system launches the app when one of the following events happens:

    • For location apps: The system receives a location update that meets the app’s configured criteria for delivery. The device entered or exited a registered region. (Regions can be geographic regions or iBeacon regions.)
    • For audio apps, the audio framework needs the app to process some data. (Audio apps include those that play audio or use the microphone.)
    • For Bluetooth apps: An app acting in the central role receives data from a connected peripheral. An app acting in the peripheral role receives commands from a connected central.
    • For background download apps: A push notification arrives for an app and the payload of the notification contains the content-available key with a value of 1. The system wakes the app at opportunistic moments to begin downloading new content.
    • For apps downloading content in the background using the NSURLSession class, all tasks associated with that session object either completed successfully or received an error. A download initiated by a Newsstand app finishes. In most cases, the system does not relaunch apps after they are force quit by the user.

    One exception is location apps, which in iOS 8 and later are relaunched after being force quit by the user. In other cases, though, the user must launch the app explicitly or reboot the device before the app can be launched automatically into the background by the system.

如您所见,唯一的异常(exception)是位置应用程序,但这对您没有帮助。 请处理以下事实,这是一个操作系统限制,您无能为力。

关于ios - 当应用程序未运行时,通过静默推送通知在后台更新本地数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501279/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap