46

iOS 7 以降では、Apple のマルチタスキング API を使用して、アプリを 3 つの新しいバックグラウンド モード (バックグラウンド フェッチ、リモート通知コンテンツ、バックグラウンド転送サービス) で実行できます。Apple はまた、iOS ユーザーが、すべてのアプリをバックグラウンドで実行できるようにするか、個々のアプリをバックグラウンドで実行できるようにするかを制御できるようにしています ([設定] > [一般] > [アプリのバックグラウンド更新])。ユーザーがアプリのバックグラウンドでの更新機能を無効にしたかどうかをアプリがプログラムで検出する方法はありますか?

4

3 に答える 3

80

これはあなたが探しているものです。

if ([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusAvailable) {

    NSLog(@"Background updates are available for the app.");
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusDenied)
{
    NSLog(@"The user explicitly disabled background behavior for this app or for the whole system.");
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusRestricted)
{
    NSLog(@"Background updates are unavailable and the user cannot enable them again. For example, this status can occur when parental controls are in effect for the current user.");
}
于 2013-10-02T13:44:28.877 に答える
8

UIApplication の backgroundRefreshStatus プロパティを確認してください。以下、アップルのドキュメントより引用。

このプロパティは、アプリをバックグラウンドで起動して、バックグラウンドでの位置更新の処理やバックグラウンド フェッチの実行などのバックグラウンド動作を処理できるかどうかを反映します。アプリがバックグラウンドで起動してタスクを実行することに依存している場合、このプロパティの値を使用して、実行が可能かどうかを判断し、可能でない場合はユーザーに警告することができます。このプロパティの値が UIBackgroundRefreshStatusRestricted に設定されている場合、ユーザーに警告しません。制限されたユーザーは、アプリのマルチタスクを有効にすることができません。

于 2013-09-27T13:02:19.353 に答える