2016-04-22 35 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; 

} 

アプリは、画面のロックを解除した後に再開イベントをスローしません。 forScene:withTransitionContext:終了: このログ画面上

のUIApplication _handleNonLaunchSpecificActions来] **未処理アクション - > { ハンドラ=リモコン; info = { (1)= 5; };あなたはあなたが必要な方法でコードを実行しAppDelgate

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

の次の方法によりを求める何ができる }

+0

あなたのアプリターゲットの 'Capabilities'タブで' Background Modes'を有効にしてください。 –

+0

サー、私は能力のバックグラウンドモードを有効にしたと確信しています –

+0

あなたは 'NSOperationQueue'を初期化しましたが、使用しませんでした...なぜですか? –

答えて

0

EDIT:

アプリは、iPhoneのロックを解除した後、再開または再起動されていないことを言ったように。

最初の再起動とは、AppDelegateapplication:didFinishLaunchingWithOptionsが呼び出されたことを意味しますが、あなたの場合(ロック解除後、このメソッドは呼び出されません。つまり、この場合は再起動されません)。

アプリのタスクを再開するには、applicationWillEnterForeground:またはapplicationDidBecomeActive:にコードし、正しく書いてください。

+0

私はすでにすべてのApp Delegateメソッドでコードを書いていますが、 (助けて –

+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:completion:] **未処理のアクション - > {リモート ハンドラ=; 情報= { (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へのすべての呼び出しは、他OSアプリを殺すこと、endBackgroundTaskへの呼び出しを持っている必要があります。

+0

私はapplicationWilEnterInForegroundにend backgroundTaskを追加しています。。Sir –

+0

UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion:] **未処理のアクション - > { ハンドラー=リモート; info = { (1)= 5; }; } –

+0

これはログ画面に表示されます –

関連する問題