2013-08-29 22 views
40

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

答えて

69

これはあなたが探しているものです。スウィフト3とiOS10用に更新

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."); 
} 
+2

おかげで、それが有用でした。しかし、あなたはこの点で私の依存する質問にコメントすることができます - http://stackoverflow.com/questions/19235183/uiapplicationbackgroundrefreshstatusdidchangenotification-usage-without-correspo – Ashok

+0

こんにちは、thiSメソッドを呼び出すことでした。その背景には、呼び出しに失敗しました –

+0

私は、背景を推測するappRefreshは何もしないサイレント通知はそうですか? – Honey

8

UIApplicationのbackgroundRefreshStatusプロパティを確認してください。以下はリンゴの文書から引用されています。

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

3

switch UIApplication.shared.backgroundRefreshStatus { 
case .available: 
    print("Refresh available") 
case .denied: 
    print("Refresh denied") 
case .restricted: 
    print("Refresh restricted") 
} 
関連する問題