我想在后台更新我的应用,所以我添加了必需的背景模式" fetch"到我的info.plist。 在我的FinishedLaunching中,我补充道:
UIApplication.SharedApplication.SetMinimumBackgroundFetchInterval (UIApplication.BackgroundFetchIntervalMinimum);
并覆盖方法PerformFetch:
public override void PerformFetch (UIApplication application, Action<UIBackgroundFetchResult> completionHandler)
{
Console.WriteLine ("PerformFetch called...");
//Return no new data by default
var result = UIBackgroundFetchResult.NoData;
...
completionHandler (result);
}
但该方法永远不会被调用...... :(
问题是什么,我找不到任何错误?谢谢你的帮助。
答案 0 :(得分:4)
不幸的是,系统在调用此处理程序时解决了自身问题,这是一个不可预测的事件。 而且你永远不会确定一定的执行时间。 最近,我调查了它,真的很不高兴。 早期,模拟器允许直接模拟呼叫。
答案 1 :(得分:2)
在iOS设备上,操作系统会无法预测此方法。调用此方法的频率有很多因素,包括您如何配置间隔以及应用程序执行后台提取通常需要多长时间。如果您经常花费很长时间来执行提取,操作系统将不经常调用此方法。请参阅此处“以机会性方式获取少量内容”部分:
以及此处的API参考:
如果您在模拟器中测试您的应用,则可以使用Run - &gt;模拟Xamarin Studio菜单中的背景提取。模拟iOS背景提取。如果您需要根据某些外部事件可靠地启动下载,请考虑使用设置了“content-available”标志的推送通知。请参阅第一个链接中的“使用推送通知启动下载”部分。