2

アプリでstartMonitoringSignificantLocationChangesを使用したいのですが、質問があります。助けが必要です。

  1. 一般的なアプリの場合、アプリがバックグラウンドに入ると、10分後にシステムがアプリを強制終了できます.startMonitoringSignificantLocationChangesを使用した場合、バックグラウンドに2時間入ると、アイコンをクリックしたため、アプリは終了しません。アプリは最後の終了ページに入ります。アプリが強制終了されます。アイコンをクリックすると、最初にデフォルトのページが表示されます。だから私の質問は、バックグラウンドを10分入力した後、システムによってアプリが強制終了されないようにstartMonitoringSignificantLocationChangesを使用することです。

  2. モバイルを閉じてモバイルを再起動すると、場所が大幅に変更されたときに、アプリをアクティブ化できる場合は、アップルデベロップメントドキュメントを見て、「はい」と答えます。テストします。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    
    
    if([CLLocationManager significantLocationChangeMonitoringAvailable]){
    [self log:@"sigAvailable=YES"];
     }
    // Override point for customizatio-n after application launch.
    
    id locationValue = [launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey];
    
    if (locationValue)
    {
    // create a new manager and start checking for sig changes
    [self log:@"didFinishLaunchingWithOptions location key"];
    m_locManager = [[CLLocationManager alloc] init];
    [self log:@"didFinishLaunchingWithOptions created manager"];
    m_locManager.delegate = self;
    [self log:@"didFinishLaunchingWithOptions set delegate"];
    [m_locManager startMonitoringSignificantLocationChanges];
    [self log:@"didFinishLaunchingWithOptions monitoring sig changes"];
            // do send local notification
    return YES;
      }
    
     [self log:@"didFinishLaunchingWithOptions"];   
     return YES;
       }
    

    私の質問:モバイルとローカルの通知を再起動すると、上記のコードが実行され、「didFinishLaunchingWithOptionsロケーションキー」などがログに記録されます。上記のコードでローカル通知を送信した場合、ユーザーは受信しますか?

4

1 に答える 1

2
  1. iOS 6には、位置情報の更新を停止するマップの新機能があります。これは、アプリをスリープ解除して位置情報の更新を受信するのに役立ちます。リンク

    locationManager.pausesLocationUpdatesAutomatically

他のすべても参照してください。

  1. VOIPの場合、アプリはデバイスの起動時に起動できます。このアップルのドキュメントを参照してください

ローカル通知の場合はに追加

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{




// creating local notification
    Class cls = NSClassFromString(@"UILocalNotification");
    if (cls)
    {
        UILocalNotification *notification = [launchOptions objectForKey:
                                             UIApplicationLaunchOptionsLocalNotificationKey];

        if (notification)
        {
            NSString *reminderText = [notification.userInfo
                                      objectForKey:kRemindMeNotificationDataKey];
            NSLog(@"notification text:%@",reminderText);
            //    [viewController._msgTextView setText:reminderText];
        }
    }

    application.applicationIconBadgeNumber = 0;

そしてあなたはそれらを扱うことができます

- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification
{
    NSLog(@"application:didReceiveLocalNotification:");
}

ローカル通知をでスケジュールできます

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{

Class cls = NSClassFromString(@"UILocalNotification");
            if (cls != nil)
            {
                UILocalNotification *notif = [[cls alloc] init];
                notif.fireDate = notifyDate;
                notif.timeZone = [NSTimeZone defaultTimeZone];
                notif.alertBody = AlertMsg;
                notif.soundName = UILocalNotificationDefaultSoundName;
                notif.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1;
                notif.alertAction = @"Show me";
                [[UIApplication sharedApplication] scheduleLocalNotification:notif];
}
}
于 2012-12-05T13:50:25.170 に答える