0

アプリケーションがバックグラウンドに入ったときにUIWebviewからログアウトする方法を教えてもらえますか?

UIWebviewを介してoffline()などのjs関数を呼び出す必要があります。

この関数を[mywebviewstringByEvaluatingJavaScriptFromString:@ "offline()"]で呼び出すと; この方法は機能していません。しかし、これはアプリケーションがフォアグラウンドに戻ったときに機能しています。

どうすればそれを機能させることができますか?

4

1 に答える 1

0

アプリがバックグラウンドに移行する前に、JavaScriptが時間内に実行されない可能性があります。appdelegateのapplicationWillResignActiveメソッドでbackgroundTaskを実行することで、より多くの時間を要求できます。

bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{                        
    dispatch_async(dispatch_get_main_queue(), ^{
        if (bgTask != UIBackgroundTaskInvalid){
            [app endBackgroundTask:bgTask];
            bgTask = UIBackgroundTaskInvalid;
        }
    });
}];

また、JavaScriptが完了したことがわかったら、バックグラウンドタスクを必ず終了してください(JavaScriptはWebビュー内にあるため、N秒後に呼び出すしか方法がない場合があります)。

// After N sections execute this:
if (bgTask != UIBackgroundTaskInvalid) {
    [[UIApplication sharedApplication] endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}
于 2012-11-07T04:23:26.690 に答える