0

アプリの起動状態になったら、didReceiveLocalNotification:(UILocalNotification *)notification を呼び出すバックグラウンド プロセス (Web サービスを呼び出すため) が必要です。その方法を教えてください。

前もって感謝します

私はこれを試しました:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
}

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif
{
    if (app.applicationState == UIApplicationStateInactive )
    {
        NSLog(@"app not running");
    }
    else if(app.applicationState == UIApplicationStateActive )
    {
        NSLog(@"app running");
    }
}
4

2 に答える 2

1

これは、このコードが実行される日の 17:00 にスケジュールされるローカル通知を作成する方法です。起動すると、メソッド-(void)application:didReceiveLocalNotification:が呼び出されます。

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone localTimeZone]];

NSDateComponents *dateComponents = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]];
[dateComponents setHour:17];
[dateComponents setMinute:00];
[dateComponents setSecond:00];

NSDate *notificationDate = [calendar dateFromComponents:dateComponents];

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = notificationDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];

localNotif.alertBody = @"blah blah blah";
localNotif.alertAction = @"Ok";

localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;

[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
于 2013-06-04T12:44:37.387 に答える
0

2件の場合に通知が届きます

  1. application:didFinishLaunchingWithOptions:メソッド内で、アプリが実行中でもバックグラウンドでも実行されていない場合。
  2. application:didReceiveLocalNotification:アプリが実行中またはバックグラウンドの場合はメソッド内。アプリが既に実行されているときにアラートを表示するのはほとんど役に立ちません。したがって、通知が発生したときにアプリがバックグラウンドにあった場合にのみ、アラートを表示する必要があります。アプリがバックグラウンドから再開しているかどうかを確認するには、 applicationWillEnterForeground:メソッドを使用します。

l

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
            UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];  
            if (localNotif) {       
                // Show Alert Here
            }
    }
于 2013-06-04T13:06:07.150 に答える