2016-04-22 5 views
0

Как правило, в любом приложении, если я открываю приложение и блокирую экран, и через час или около того, если я разблокирую экран, приложение снова запускается. Но мое приложение не может перезапустить или возобновить работу. Есть ли какие-либо настройки для возобновления моего приложения, или я что-то не хватает?Приложение iOS не возобновляется после разблокировки экрана

if (!oprationQueue) {// Application did enter in background method 
     oprationQueue = [[NSOperationQueue alloc] init]; 
    } 
    NSInteger updateSec = [[NH_Fetch_settings alloc] getUpdateTimeInterva]; 
    bgdataUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:updateSec target:self selector:@selector(updateData:) userInfo:nil repeats:YES]; 
    NSInteger cleanSec = [[NH_Fetch_settings alloc] cleanupFrequency]; 
    bgCleanupTimer = [NSTimer scheduledTimerWithTimeInterval:cleanSec target:self selector:@selector(cleapAllData:) userInfo:nil repeats:YES]; 

    [NH_advertisement sharedInstance].isFirstTime = NO; 
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"advFirst"]; 


    backgroundTask_dataUpdate =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 

     NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining); 
    }]; 

    backgroundTask_cleanUp =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 

     NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining); 

    }];  
} 

- (void)applicationWillEnterForeground:(UIApplication *)application{ 
    [application endBackgroundTask:backgroundTask_dataUpdate]; 
    backgroundTask_dataUpdate = UIBackgroundTaskInvalid; 
    [application endBackgroundTask:backgroundTask_cleanUp]; 
    backgroundTask_cleanUp = UIBackgroundTaskInvalid; 

} 

Приложение не бросает событие возобновления после разблокировки экрана. Это Приходи на экране журнала

UIApplication _handleNonLaunchSpecificActions: forScene: withTransitionContext: завершение:] ** необработанное действие -> { Обработчик = дистанционная; info = { (1) = 5; }; }

+0

Пожалуйста, убедитесь, что вы включили «Режимы фона» на вкладке «Возможности» вашего целевого приложения. –

+0

Сэр, я уверен, что я включил режим фона в возможностях. –

+0

У вас есть инициализация 'NSOperationQueue', но не используется ... почему? –

ответ

0

Вы можете делать то, что вы просите от следующих методов AppDelgate

- (void)applicationWillResignActive:(UIApplication *)application; 
- (void)applicationDidEnterBackground:(UIApplication *)application; 
- (void)applicationWillEnterForeground:(UIApplication *)application; 
- (void)applicationDidBecomeActive:(UIApplication *)application; 

Do кода в необходимый метод.

EDIT:

Как вы сказали, что ваше приложение не возобновлять или повторного запуска после разблокировки Iphone.

Первое повторное запуск означает, что AppDelegate «s application:didFinishLaunchingWithOptions называется, но в вашем случае (после разблокировки устройства этот метод не собирается назвать то приложение не будет возобновлен в данном случае).

Чтобы возобновить выполнение задачи приложения, вы можете ввести код applicationWillEnterForeground: или applicationDidBecomeActive:, и вы написали правильно.

+0

Я уже написал код во всем методе делегирования приложений .. но мое приложение не возобновляется после разблокировки экрана ...: (помогите мне –

+0

Поделитесь своим кодом ... чтобы люди могли помочь вам –

+0

Сэр .. Я обновляю код .. –

0

Если у вас есть блокирующее устройство, возможно, выполняется код, который может привести к сбою приложения. Пожалуйста, следуйте простому шагу, который использовался для идентификации сбоя, если он есть во время блокировки экрана. Попробуйте просмотреть все журналы сбоев, оставленные на устройстве приложением.

Connect your device 
Open XCode 
Go to the Organizer (Window > Organizer) 
Expand your device listing in the sidebar and select Device Logs 
Look for any crash logs left behind by your app 

А также скажите, есть ли у вас код в следующем методе.

- (void)applicationWillResignActive:(UIApplication *)application; 
- (void)applicationDidEnterBackground:(UIApplication *)application; 
- (void)applicationWillEnterForeground:(UIApplication *)application; 
- (void)applicationDidBecomeActive:(UIApplication *)application; 
+0

Сэр я обновляю код ... помогите мне :( –

+0

Это пришло на экран журнала ........ UIApplication _handleNonLaunchSpecificActions: forScene: withTransitionContext: завершение:] ** необработанное действие -> { обработчик = дистанционная; информация = { (1) = 5; };} –

+0

это означает, что у вас есть попытаться получить доступ к частным методам, но экземпляр этого класса не существует – iMHitesh

0

Я думаю, вы должны добавить нижеприведенный код в пределах beginBackgroundTaskWithExpirationHandler:^{} метод.

[application endBackgroundTask:backgroundTask_dataUpdate]; 
backgroundTask_dataUpdate = UIBackgroundTaskInvalid; 

Таким образом, код должен выглядеть примерно так.

backgroundTask_dataUpdate =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 

[application endBackgroundTask:backgroundTask_dataUpdate]; 
backgroundTask_dataUpdate = UIBackgroundTaskInvalid; 

NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining); 
}]; 

Примечание: Каждый вызов beginBackgroundTaskWithExpirationHandler должен иметь вызов endBackgroundTask, иначе OS может убить ваше приложение.

+0

Я добавляю конец backgroundTask в applicationWilEnterInForeground .... Sir –

+0

UIApplication _handleNonLaunchSpecificActions: forScene: withTransitionContext: завершение:] ** необработанное действие -> {handler = remote; info = { (1) = 5; }; } –

+0

Это отображается на экране журнала –

Смежные вопросы