4

バックグラウンドにあるタスクをなんとかして「ウェイクアップ」して、ネットワーク上の何かをすばやくチェックできるかどうかを知りたいのですが、これはUILocalNotificationで実行できると思いますが、何を試しても、アプリがバックグラウンドにあるときにdidReceiveLocalNotificationに何も実行させることができませんでした。起動後、ホームボタンを押してすぐにアプリを閉じます(ローカル通知が起動するまでに10秒の遅延があります)。このコードは、アプリがフォアグラウンドにあり、そこに座っているだけで完璧に機能します...

アプリデリゲートヘッダーファイル:

 UILocalNotification *localNotif;

テストのために、appDelegateスタートアップですばやく起動するようにローカル通知を設定しました。

localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];  // the date you want the notification to fire.
localNotif.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];

NSLog(@"setup the timer for 10 seconds");





- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIApplicationState state = [application applicationState];
NSLog(@"getting kicked");
if (state == UIApplicationStateInactive) {

    // Application was in the background when notification was delivered.

    NSLog(@"INACTIVE..");
} else {
    NSLog(@"ACTIVE..");

}

}

4

1 に答える 1

5

ユーザーにはいくつかの選択肢があります。#1)アプリの通知を表示するかどうか。#2)アプリで通知が有効になっている場合、通知をクリックしてアプリを起動しますか。彼らが通知を受け入れ、アプリがバックグラウンドにあるときに通知を開くと、 application:didReceiveLocalNotificationが呼び出されます。明確にするために、ユーザーは通知を受け入れる必要があります(通知の下にあるスライダーをスライドさせるなど)...そうでない場合は、NOTHINGが呼び出されます。

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

アプリが終了した場合application:didFinishLaunchingWithOptions:は-と呼ばれます

- (BOOL)application:(UIApplication *) 
application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions {
    UILocalNotification *theNotification = 
      [launchOptions 
        objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    NSLog(@"%@", theNotification);

    return YES;
}
于 2012-11-09T03:51:20.453 に答える