Xamarin: 為你的iOS應用添加后臺數據刷新

wdwu 8年前發布 | 13K 次閱讀 Xamarin iOS開發 移動開發

來自: https://blog.xamarin.com/add-background-data-refresh-to-ios-apps/

Users expect your apps to load quickly. A critical component of a user’s perception of your app is how fast it loads data. There are many steps you can take to speed up network requests, including general networking techniques like request prioritization and speculative requests or taking advantage of the native networking stack on iOS or Android withModernHttpClient. You can also utilize caching so that users can at least view a partial data set while they wait for new data from the server.

But what if your data was there before the user even opened your app? This may seem extremely difficult or even impossible, but many apps you use every day such as 非死book and 推ter are already utilizing this powerful feature. In this blog post, we’re going to walk through the process of adding background data refresh in just three simple steps to your iOS apps.

  1. Edit your Info.plist to enable Background fetch .
  2. Set the minimum background fetch interval.
  3. Override the PerformFetch method in the AppDelegate .

Request Permission for Background Fetch in Info.plist

Open the Info.plist file within either Xamarin Studio or Visual Studio and scroll to the bottom. Select the Background fetch property, and make sure that Enable Background Modes is checked.

Adding Background Refresh

To minimize the data and battery power consumed during background refresh, iOS requires that you refresh no more often than every 15 minutes, though it’s unlikely you’ll need to refresh your data more than this. To set the minimum background refresh level, call the application delegate’s SetMinimumBackgroundFetchInterval method and pass in a double, representing the minimum number of seconds between a background refresh:

// Minimum number of seconds between a background refresh
// 15 minutes = 15 * 60 = 900 seconds
private const double MINIMUM_BACKGROUND_FETCH_INTERVAL = 900;
 
private void SetMinimumBackgroundFetchInterval ()
{
    UIApplication.SharedApplication.SetMinimumBackgroundFetchInterval (MINIMUM_BACKGROUND_FETCH_INTERVAL);
}

Performing Background Fetch

Next, override the PerformFetch method in your AppDelegate . This is the code that will be executed when your app is ready to refresh data. Be sure to call the completion handler and pass in the download status; if this is not called, your application will be terminated by the OS:

// Called whenever your app performs a background fetch
public override void PerformFetch(UIApplicationapplication, System.ActioncompletionHandler)
{
    // Do Background Fetch
    var downloadSuccessful = false;
    try 
    {
        // Download data
        await Client.Instance.BeerDrinkinClient.RefreshAll();
        downloadSuccessful = true;
    } 
    catch (Exceptionex) 
    {
        Insights.Report(ex);
    }
 
    if (downloadSuccessful) 
    {
        completionHandler (UIBackgroundFetchResult.NewData);
    } 
    else 
    {
        completionHandler (UIBackgroundFetchResult.Failed);
    }
}

Conclusion

Background data refresh is an important part of ensuring that your app always has the latest data ready to present to the user and will vastly increase the speed perception of your application. iOS makes it very easy to implement background refresh in just three easy steps and less than 75 lines of code. To see background data refresh in action with a real app, check out our BeerDrinkin’ sample.

 本文由用戶 wdwu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!