ユーザーの位置を監視したいゲームを開発しています。そして、ゲームがすべて私の近くのユーザーを攻撃するように、非常に頻繁に発生する必要があります。私が彼を攻撃し、同じユーザーでユーザーが範囲外に移動すると、これは私にとってミスになります。
時間間隔で位置更新メソッドを呼び出す方法は 1 つ知っていますが、それは私には良くないようです。これを達成する他の方法はありますか?
core-location に distanceFilter を設定し、startUpdatingLocation で位置追跡を開始すると、設定した距離を移動するたびに更新が取得されます。遅い動きの位置はあまり正確ではなく、更新に時間がかかる可能性があるため、「タッチ」をどの程度「近づける」かによっては、やりたいことが難しい場合があります。10m未満をタッチで使うのは難しいかもしれません。
これにはコア ロケーション フレームワークを使用できます。次のようなデリゲートメソッド:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) { // Check if the class assigning itself as the delegate conforms to our protocol. If not, the message will go nowhere. Not good.
[self.delegate locationUpdate:newLocation];
}
}
このメソッドは、ユーザーが場所を更新したときに呼び出されます。このチュートリアルもご覧ください。