SwiftでバックグラウンドでもiBeaconを検知する方法
Swfitの練習のためにiBeaconのサンプル作って練習してみました。
iBeaconをバックグラウンドでも受信するポイントは、
- Info.plistに
NSLocationAlwaysUsageDescription
を追加 - Capabilitiesで
Background Modes
での位置情報の更新の設定を追加
- バックグランド時には位置情報更新をする
// アプリがバックグラウンド状態の場合は位置情報のバックグラウンド更新をする // これをしないとiBeaconの範囲に入ったか入っていないか検知してくれない let appStatus = UIApplication.sharedApplication().applicationState let isBackground = appStatus == .Background || appStatus == .Inactive if isBackground { self.locationManager.startUpdatingLocation() }
- 位置情報を利用することをコードでリクエストする
// 位置情報を使うためのユーザーへの認証が必要になる // 認証を依頼するためにコードでリクエストを出すないといけない func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) { if status == .NotDetermined { self.locationManager.requestAlwaysAuthorization() } }
このあたりがちょっとしたはまりどころな気がする。
Swiftも大分慣れてきて楽しくなってきた!