私のアプリがロックされてロックが解除されたときだけでなく、空になったとき(長い非アクティブ後)に、私のアプリが集中していないのにバックグラウンドで実行されているときに、アプリが集中している間にアプリケーションがバックグラウンドで実行されているときに電話イベントをロック/ロック解除するにはどうすればよいですか?
私は簡単にロック/アンロック/空白のイベントを受け取ることができます。
-(void) startListeningForPhoneLockEvent
{
NSLog(@"Start listening to lock/unlock and screen-goes-black events.");
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
(void*)self,
lockStateChanged,
CFSTR("com.apple.springboard.lockstate"),
NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
(void*)self,
hasBlankedScreen,
CFSTR("com.apple.springboard.hasBlankedScreen"),
NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
}
とコールバック機能:
static void lockStateChanged(CFNotificationCenterRef center, void*observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
NSLog(@"Lock event received!");
}
static void hasBlankedScreen(CFNotificationCenterRef center, void*observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
NSLog(@"Blanked screen event received!");
}
私は有効にしたバックグラウンドモード:
-
を
- バックグラウンドフェッチ。
ただし、アプリがバックグラウンドに入ると、ロック/アンロック/空白の画面イベントは受信されません。
私は、サウンドの再生、位置の更新などの他のバックグラウンドモードで試してきましたが、バックグラウンドでロック/ロック解除/空白の画面イベントを受け取っていません。
これが実際に可能かどうか、私が間違っているかどうかは分かりません。
最新のXCodeとiOS9 SDKを使用して、iOS9にアップデートされた実際のデバイスでテストしています。
私はSwiftのソリューションも気にしません。 –
アプリケーションでバックグラウンドモードを有効にしても問題が解決しない場合、アプリケーションは実際にバックグラウンドで実行されている必要があります。電話機をロック/ロック解除すると、アプリケーションが実際にバックグラウンドで実行されていることを確認できますか? – user3334059
@SumantHanumante、バックグラウンドでの実行、ロックの聴取、イベントのロック解除に関するアップルの制限はありますか? –