Сохраняйте покупки в приложении, когда iPhone спит - PullRequest
0 голосов
/ 23 марта 2012

Мне нужна помощь о том, как сохранить покупки в приложении при загрузке моего приложения, когда пользователь спит на своем iPhone или приложение переходит в фоновый режим.У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 29 марта 2012

Определить BackgroundTaskWithExpirationHandler in applicationDidEnterBackground: вот так:

// ...
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;
            }
        });
    });
}

Чтобы увидеть, как это работает, скачайте пример проекта Я сделал для Вас.

git clone https://gitlab.com/jacekmigacz/BTWEH.git

... и нажмите кнопку Home , чтобы вызвать applicationDidEnterBackground:.

Идея состоит в том, чтобы делегировать вашу задачу загрузки другому, привилегированному потоку и держать ваше приложение в фоновом режиме вместо того, чтобы ОС приостановила его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...