ozg*_*gur 8 iphone objective-c background-process ios
我编写了一个简单的应用程序,以测试和监控iOS7中后台提取功能的工作原理.
首先,我在Info.plist文件中设置了UIBackgroundMode选项.
然后;
我加入到下面的代码到应用中:didFinishLaunchingWithOptions:方法在AppDelegate.m:

最后,我已经实现了应用程序:(UIApplication*)应用程序performFetchWithCompletionHandler:方法.

每次我单击Debug-> Simulate Background Fetch按钮时,它都会更改应用程序的批号并按预期工作.
但是,当应用程序未运行时,我甚至无法使其工作(即使在后台模式下也没有运行).
Apple表示,当应用程序未运行且操作系统要分别执行以下方法时:
application:(UIApplication *)application didFinishLaunchingWithOptions:
applicationDidEnterBackground:(UIApplication *)application
application:(UIApplication *)application performFetchWithCompletionHandler:
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,有没有办法在应用程序未运行时测试后台提取?
我正在使用iOS 7.1在iPod 5th Gen上测试这个.
tab*_*ber 22
编辑2:请注意,如果用户从应用切换器中杀死应用,则后台提取将永远不会再次发生.这正如Apple所期望的那样.有关详细信息,请参阅相关的"了解您的应用程序何时启动到后台"文档:
在大多数情况下,系统在用户强行退出后不会重新启动应用程序.位置应用程序是一个例外,它在iOS 8及更高版本中被用户强行退出后重新启动.
一个旧的开发者论坛帖子(遗憾的是链接不再存在)......
"如果您从多任务UI中杀死一个应用程序,系统将永远不会再次自动启动应用程序.这里的逻辑是,如果用户已经杀死了您的应用程序,他们可能希望它保持死亡状态."
您可以向Web服务器发出一个简单的GET请求,例如:" http://dev.example.org/?ping=1 ",然后在Web服务器上grep access.log以获取"?ping = 1"
编辑:测试在后台启动的应用程序的另一种方法(例如:无法双击主页按钮并切换到它)是通过创建仅后台方案.转到产品 - >方案 - >管理方案,然后复制默认方案.

然后编辑新方案并单击选项选项卡并选中"由于后台获取事件而启动" - 当您运行应用程序时,它将直接启动到后台,就像正常使用一样.

| 归档时间: |
|
| 查看次数: |
10369 次 |
| 最近记录: |