2016-10-08 14 views
2

ユーザーは、推定ビーコンを使用して特定のフロアに到達したときに通知します。私の仕事をするために、私は以下のようなコードを開発しました:{"msg":iOSの "フェンス:onClientEventRegionState、無効な状態"、 "regionState": "0"}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    self.beaconManager.delegate = self 

    self.beaconManager.requestAlwaysAuthorization() 
    let firstFloorRegion = CLBeaconRegion(
     proximityUUID: uuid, 
     major: 2, identifier: "") 
    firstFloorRegion.notifyOnEntry = true 
    firstFloorRegion.notifyOnExit = true 
    firstFloorRegion.notifyEntryStateOnDisplay = true 
    self.beaconManager.startMonitoring(for: firstFloorRegion) 
    self.beaconManager.requestState(for: firstFloorRegion) 

    return true 
} 
func beaconManager(manager: AnyObject, didDetermineState region: CLBeaconRegion) { 

    NSLog("didDetermineState Called") 
} 
private func beaconManager(manager: AnyObject, didEnterRegion region: CLBeaconRegion) { 

    NSLog("DidEnterRegion Called") 
} 
private func beaconManager(manager: AnyObject, didExitRegion region: CLBeaconRegion) { 

    NSLog("didExitRegion Called") 
} 

数日間、それは完璧に働いていました。しかし、以降のこのようなXcodeのコンソールにエラーを示し、最後の2日間:

[クライアント] { "MSG": "フェンス:onClientEventRegionState、無効状態"、 "regionState": "0"}

意味が分かりません。私はインターネットでも解決策を見つけられませんでした。私がそれから出るのを助けてください。

答えて

3

私は、電話の再起動後にiBeaconの監視(一般に地域監視)に10分かかることに気付きました。案の定、私は自分の携帯電話を再起動すると、私は

manager.requestState(for: myRegion) 

を呼び出したときにコンソール出力であなたのエラーを得た私は、Appleが既に登録されている地域に

manager.startMonitoring(for: myRegion) 

を呼び出し、任意の負の影響について話見たことがありません。しかし、私はアプリが起動するたびにこれを呼び出すわけではありません。代わりに、次のように監視地域を確認します:

for monitoredRegion in self.locationManager.monitoredRegions as! Set<CLBeaconRegion> { 

    print("Monitoring: " + monitoredRegion.proximityUUID.uuidString + " " + monitoredRegion.identifier) 

    self.locationManager.requestState(for: monitoredRegion) 

    switch monitoredRegion.proximityUUID.uuidString { 
     case myRegionUUID.uuidString: 
     needToMonitorMyRegion = false 
     default: 
     break 
    } 
} 

このような登録を検証するとエラーは発生しません。電話の再起動時にエラーが発生するだけです。

+0

ジョンさんありがとうございます。 –

関連する問題