Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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
C# iOS:UIBackgroundFetch-未调用PerformFetch_C#_Ios_Iphone_Xamarin.ios_Xamarin - Fatal编程技术网

C# iOS:UIBackgroundFetch-未调用PerformFetch

C# iOS:UIBackgroundFetch-未调用PerformFetch,c#,ios,iphone,xamarin.ios,xamarin,C#,Ios,Iphone,Xamarin.ios,Xamarin,我想在后台更新我的应用程序,所以我在info.plist中添加了必需的后台模式“fetch”。 在我的最后一次发布中,我补充道: UIApplication.SharedApplication.SetMinimumBackgroundFetchInterval (UIApplication.BackgroundFetchIntervalMinimum); 以及覆盖方法PerformFetch: public override void PerformFetch (UIApplication a

我想在后台更新我的应用程序,所以我在info.plist中添加了必需的后台模式“fetch”。 在我的最后一次发布中,我补充道:

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);
}
public override void PerformFetch(UIApplication应用程序,Action completionHandler)
{
Console.WriteLine(“PerformFetch调用…”);
//默认情况下不返回新数据
var result=UIBackgroundFetchResult.NoData;
...
completionHandler(结果);
}
但该方法从未被调用…:(


有什么问题,我找不到任何错误?谢谢您的帮助。

不幸的是,系统在调用此处理程序时自行解决了问题,这是一个不可预测的事件。 你永远不会决定执行的时间。 最近,我调查了一下,真的很生气。
早期,模拟器允许直接模拟调用。

不幸的是,当调用此处理程序时,系统自行解决了问题,这是一个不可预测的事件。 你永远不会决定执行的时间。 最近,我调查了一下,真的很生气。
早期,模拟器允许直接模拟调用。

在iOS设备上,操作系统会不可预测地调用此方法。调用此方法的频率有很多因素,包括您如何配置间隔以及您的应用程序通常需要多少时间来执行后台回迁。如果您经常需要很长时间来调用此方法如果执行获取,操作系统将不经常调用此方法。请参阅此处的“机会获取少量内容”一节:

以及此处的API参考:

:


如果你在模拟器中测试你的应用程序,你可以模拟XAMARIN Studio菜单中的背景获取,运行Run>模拟iOS背景获取。如果你需要基于某些外部事件可靠地启动下载,考虑使用“内容可用”标志集的推送通知。“使用推送通知启动下载"从第一个链接开始。

在iOS设备上,操作系统会不可预测地调用此方法。调用此方法的频率有很多因素,包括您如何配置间隔以及您的应用程序通常需要多长时间来执行后台提取。如果您经常需要很长时间来执行提取,操作系统将调用此方法不太常见。请参阅此处的“偶然获取少量内容”一节:

以及此处的API参考:

:


如果你在模拟器中测试你的应用程序,你可以模拟XAMARIN Studio菜单中的背景获取,运行Run>模拟iOS背景获取。如果你需要基于某些外部事件可靠地启动下载,考虑使用“内容可用”标志集的推送通知。从第一个链接“使用推送通知启动下载”。

是的,这很好,我可以捕获事件,但我无法确定确切时间,处理程序偶尔会发生。如果可以“捕获”"对于有断点的事件,请尝试在
LLDB
提示符下键入
bt
。这是回溯,它将显示断点前发生的情况。它可能会给您一些颜色:您的问题所在。感谢您提供的提示,我非常感谢。还有什么?我的意思是如何通过时间确定调用原则我用断点2测试它,但我想我等不及了。我会用模拟器测试它。问题是苹果告诉我,对不起,我们不想在应用程序中使用更新/同步按钮,请删除它并在后台运行更新!好的,现在我将在应用程序的第一次启动时自动运行更新,并使用后台upd使应用程序保持最新ates.NO,这表示此功能范围将执行多长时间。你不能在应用程序的后台模式下执行太长时间。我误解了你的问题。你的意思是因为更新按钮而拒绝了你的应用程序吗?是的,这很好,我可以捕捉到事件,但我无法确定确切的时间,处理程序会发生偶尔。如果你能“抓住”对于有断点的事件,请尝试在
LLDB
提示符下键入
bt
。这是回溯,它将显示断点前发生的情况。它可能会给您一些颜色:您的问题所在。感谢您提供的提示,我非常感谢。还有什么?我的意思是如何通过时间确定调用原则我用断点2测试它,但我想我等不及了。我会用模拟器测试它。问题是苹果告诉我,对不起,我们不想在应用程序中使用更新/同步按钮,请删除它并在后台运行更新!好的,现在我将在应用程序的第一次启动时自动运行更新,并使用后台upd使应用程序保持最新ates.NO,它表示此功能范围将执行多长时间。你不能在应用程序的后台模式下执行太长时间。我误解了你的问题。你是说你的应用程序因更新按钮而被拒绝吗?根本不回答问题。它清楚地说明,
PerformFetch
永远不会被拒绝s call.根本没有回答问题。它清楚地表明,
PerformFetch
从未被调用。