iPhone 5S で Bluetooth LE を使用しており、次のことを行っています。
私は bluetooth 周辺機器を持っており、3 つの bluetooth アドバタイジング チャネル (37、38、および 39) すべてで 20 ミリ秒ごとにアドバタイズするように構成しました。
Info.plist で UIBacgroundModes = bluetooth-central を使用してアプリを構成しました
以下のようなscanForPeripheralsWithServicesを開始しました
コード:
NSDictionary *options = @{
CBCentralManagerOptionRestoreIdentifierKey:@"myCentralManagerIdentifier",
CBCentralManagerScanOptionAllowDuplicatesKey:[NSNumber numberWithBool:YES]
};
self.manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];
[self.manager scanForPeripheralsWithServices:[NSArray arrayWithObject:[CBUUID UUIDWithString:@"<uuid removed>"]] options:options];
現在の状態は次のとおりです。
フォアグラウンド モードでは、周辺機器を起動すると (1 秒以内に) アプリがすぐに広告メッセージを受け取ります。
バックグラウンド モードでは、アプリは周辺機器を起動してから 10 秒以内に広告メッセージを受信することがありますが (不良であっても許容できます)、非常に長い時間 (数分以上) 広告を受信しないことがよくあります。アプリケーションのために働きます。
質問は:
スキャン アプリがバックグラウンドにあるときに、iOS が Bluetooth 4.0 LE 周辺機器をスキャンしている速度を上げることは、何らかの方法で可能ですか? これを行うパブリック API はないと思うので、Apple によって公開されていないプライベート API を探しています。これは社内向けのエンタープライズ アプリ用であるため、プライベート API は完全に問題ありません。