4

地域監視を使用して、ランドマークに近づいたときにユーザーに警告するアプリに取り組んでいます。すべて正常に動作しますが、アプリがバックグラウンドにあるとアラートが表示されません。アプリを開くと、すべてのアラートがポップアップ表示されます。私が欲しかったのは、アプリがバックグラウンドにあるときにそれらを取得することでした. それが可能かどうか、またはアラートを受け取るためにアプリを実行する必要があるかどうか疑問に思っていますか? どんな助けでも大歓迎です。

更新: 問題は、ローカル通知の代わりにアラートを使用したことのようです。使用したコードは次のとおりです。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    NSLog(@"Entered Region - %@", region.identifier);
    [self showRegionAlert:@"You are near: " forRegion:region.identifier];
}

これをローカル通知に変更するにはどうすればよいですか?

4

3 に答える 3

7

の「アプリリージョンモニタリングのテスト」セクションを確認してください

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html

フォアグラウンドとバックグラウンドを切り替えると、アプリをフォアグラウンドに戻す前に、しきい値条件が満たされてトリガーされない場合があります。

また、バックグラウンドアプリが通知を受け取った場合、メッセージを処理するための小さなウィンドウしかありません。ネットワークリクエストを実行しようとすると、タイムアウトになる可能性があります...

plistの設定を確認します-高精度のポジショニングが必要な場合にのみ必要なUIBackgroundModesとして場所を宣言します。重要な場所の変更は、場所が定義されていなくても機能します。

locationManager:didUpdateLocations:およびlocationManager:didFailWithError:が呼び出されており、エラーが通知されていないことを確認してください。

plistでApplicationRunsInBackgroundをNOに設定していないことを確認してください。

AppDelegates applicationDidEnterBackground:、application:didFinishLaunchingWithOptions:と友達を実装して、特定の時間にアプリのライフサイクルのどこにいるかを見つけてください。

于 2013-02-24T22:41:28.107 に答える
0
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    NSLog(@"Yes! Welcome to %@",region.identifier);
    UILocalNotification* notify = [UILocalNotification new];
    notify.alertBody = [NSString stringWithFormat:@"Welcome to %@",region.identifier];
    notify.soundName = UILocalNotificationDefaultSoundName;
    if (notify.applicationIconBadgeNumber == 0) {
        notify.applicationIconBadgeNumber = 1;
    }
    [[UIApplication sharedApplication] presentLocalNotificationNow:notify];
}
于 2015-09-30T09:32:24.237 に答える
0
  1. ジオフェンシング ソリューションについては、@Niels Castle の回答を参照できます。
  2. ローカル通知については、以下のコードを参照できます。
UILocalNotification* localNotification = [[UILocalNotification alloc] init];

localNotification.alertBody = @"I'M IN THE REGION";

localNotification.userInfo = [[NSDictionary alloc]initWithObjectsAndKeys:@"nearBy",@"type", nil];

localNotification.timeZone = [NSTimeZone defaultTimeZone];

localNotification.soundName = UILocalNotificationDefaultSoundName;

[[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
于 2014-11-25T10:42:35.203 に答える