【问题标题】:Keep in-app-purchases downloading when iPhone sleepsiPhone 休眠时继续下载应用内购买
【发布时间】:2012-04-07 21:33:03
【问题描述】:

我需要有关如何在用户睡眠 iPhone 或应用程序进入后台模式时在我的应用程序下载中保留应用内购买项目的帮助。有人有什么想法吗?

【问题讨论】:

    标签: objective-c ios xcode ios4


    【解决方案1】:

    applicationDidEnterBackground: 中定义 BackgroundTaskWithExpirationHandler,如下所示:

    // ...
    UIBackgroundTaskIdentifier bti;
    // ...
    
    - (void)applicationDidEnterBackground:(UIApplication *)application {
        bti = [application beginBackgroundTaskWithExpirationHandler:^{
            dispatch_async(dispatch_get_main_queue(), ^{
                if(bti != UIBackgroundTaskInvalid) {
                    [application endBackgroundTask:bti];
                    bti = UIBackgroundTaskInvalid;
                }
            });
        }];
        
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    
            // DO or CONTINUE RESUMED DOWNLOAD HERE
            
            dispatch_async(dispatch_get_main_queue(), ^{
                if(bti != UIBackgroundTaskInvalid) {
                    [application endBackgroundTask:bti];
                    bti = UIBackgroundTaskInvalid;
                }
            });
        });
    }
    

    要查看它是如何工作的,请下载sample project我为你制作。

    git 克隆 https://github.com/jacekmigacz/BTWEH.git

    ...然后按 Home 按钮 触发 applicationDidEnterBackground:

    想法是将您的下载任务委托给另一个特权线程,并将您的应用程序保持在后台状态,而不是让操作系统挂起它。

    【讨论】:

    • 兄弟在 [application beginBackgroundTaskWithExpirationHandler:,,,,, 我应该在这里将 APPLICATION 更改为我的应用程序的名称
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多