iOSのEddystoneビーコントラッキングで実際にこのようなことが可能かどうかを知りたいと思います。iOSのEddystoneビーコンのバックグラウンド追跡
私は現在、Eddystoneビーコンをスキャンする必要のあるアプリを開発中です。 アプリの基本的な考え方は次のとおりです。 - ユーザーがアプリを開きます。 - ユーザーは特定の時刻(将来)に会議の登録を行います。 - 会議の開始5分前にBTスキャンを開始します。 - 検出されたビーコンがネットワーク要求を行い、ユーザに通知を表示します。
アプリがフォアグラウンドにある場合は問題ありません。電話するだけで
func startScan() {
if centralManager.state == .poweredOn {
let services = [CBUUID(string: "FEAA")]
let options = [CBCentralManagerScanOptionAllowDuplicatesKey: true]
centralManager.scanForPeripherals(withServices: services, options: options)
}
}
スキャンが開始されます。 ビーコンが見つかったときに、サーバーから正しいデータが取得されたら、スキャンを停止します。
アプリがバックグラウンドであってもスキャンの開始をスケジュールすることはどうしても可能ですか? もちろん、それが殺されたら、それで何もできません。
ひとつのアイデアは、いくつかの「サイレントローカル通知」を作成することでしたが、その後のAppleのドキュメントを読ん後には、アプリがフォアグラウンドにあるときだけに呼び出され
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
}
のように思えますか?
ご意見やご提案をいただければ幸いです。
説明していただきありがとうございます。私は、アプリがバックグラウンドにある特定の時間にスケジュールすることができないことを恐れていました。 – Karlis
しかし、サイレントプッシュ通知はどうですか? https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW1 サイレントプッシュ通知を設定する方法の例があります。そのようなケースがアプリストアによって承認されるかどうかを考えよう: 1.サイレントプッシュ通知を送信する 2.ビーコンの監視を開始するバックグラウンドタスクを開始する – Karlis