iOS7からアプリのバックグラウンド実行可否をユーザが設定、選択できるようになった。つまり、お行儀の悪いアプリはユーザの意思でバックグラウンド実行を止められるということ。なお、 バックグラウンド実行 と書いているが、Appleの日本語表記では Appのバックグラウンド更新 が正しいらしい。
設定状態はUIApplicationのbackgroundRefreshStatus
プロパティから取得できる。このプロパティは UIBackgroundRefreshStatus
の値を持ち、次の3項目がある。
-
UIBackgroundRefreshStatusAvailable
バックグラウンド更新は可能 -
UIBackgroundRefreshStatusDenied
バックグラウンド更新は不可能(ユーザが禁止している) -
UIBackgroundRefreshStatusRestricted
バックグランド更新は禁止されている(デバイス設定により禁止されており、ユーザは有効化出来ない)
条件分岐するとすればこんなかんじ。
UIApplication *app = [UIApplication sharedApplication];
if (app.backgroundRefreshStatus == UIBackgroundRefreshStatusAvailable) {
NSLog(@"バックグラウンド更新が可能");
} else if(app.backgroundRefreshStatus == UIBackgroundRefreshStatusDenied) {
NSLog(@"バックグラウンド更新はユーザによって禁止されている。");
} else if(app.backgroundRefreshStatus == UIBackgroundRefreshStatusRestricted) {
NSLog(@"デバイス設定により無効にされている(ユーザが有効にすることは出来ない)。");
}
参考