Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使应用程序在后台执行功能_Ios_Swift_Background_Notifications - Fatal编程技术网

Ios 使应用程序在后台执行功能

Ios 使应用程序在后台执行功能,ios,swift,background,notifications,Ios,Swift,Background,Notifications,我希望我的应用程序在手机被锁定时按固定时间间隔执行功能,以便在需要时显示通知 我知道我应该使用UIApplication.shared.setMinimumBackgroundFetchInterval作为时间间隔,所以我在AppDelegate的didfishlaunchingwithoptions函数中设置它。后台模式也在myinfo.plist中设置 我将我的refreshData功能放在AppDelegate的performFetchWithCompletionHandler中,当我在手

我希望我的应用程序在手机被锁定时按固定时间间隔执行功能,以便在需要时显示通知

我知道我应该使用
UIApplication.shared.setMinimumBackgroundFetchInterval
作为时间间隔,所以我在
AppDelegate
didfishlaunchingwithoptions
函数中设置它。
后台模式也在my
info.plist
中设置

我将我的
refreshData
功能放在
AppDelegate
performFetchWithCompletionHandler
中,当我在手机上加载应用程序时,使用
模拟后台提取
调试控件时,一切都运行得很好,但当我把手机放在一边时,一切都不会自行发生


我猜在我设置的时间间隔内,
performFetchWithCompletionHandler
不会自动调用。我如何确保它按计划每60秒运行一次?

你不能。iOS决定何时和多久在后台调用你的应用程序,而不是你。你可以简单地要求时间,并期待最好的结果。如果用户经常使用你的应用程序,那么操作系统会给你更多的后台时间

如果您想要更多,您可以从外部服务器向设备发送APN,这将唤醒应用程序并给您一些处理时间


详细介绍您的选项。

非常感谢David。这是否意味着我的方法是好的?你知道Tinder这样的应用程序在这种情况下如何发送新消息和匹配的通知吗?应用程序不是在后台工作,然后显示新事件吗?它们正在使用远程APNS通知。Tinder服务器正在向设备发送APNS,这会导致通知。应用甚至不需要运行就可以显示APNS。嗨,大卫!如果我正确阅读了文档,我需要的是向设备发送推送通知以启动下载,然后根据下载和分析返回的数据显示通知是否正确?是否可以将服务器设置为定期发送此类通知?是的@Martin33000服务器可以按照自己的意愿尽快发送通知。只处理最后收到的通知,但如果您的目标只是获取后台时间,则可以定期发送通知。