2012-02-03 7 views
1

iOSアプリケーションを開発していますが、アプリケーションの状態がアクティブでない場合にローカル通知を取得する必要があります。アプリケーションがバックグラウンド状態になったら、正常に通知を受け取ります。 アプリケーションが非アクティブなときにローカル通知を受け取ることは可能ですか? それとも、プッシュ通知のみを使用して可能ですか?あなたのアプリデリゲートに2つの場所で地元の通知に応答する必要がアプリケーションの状態が非アクティブのときにローカル通知を受け取ることは可能ですか?

よろしく、 アーメン

答えて

9

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

- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 

アプリケーションが実行されていなかったときに最初にのためにある - にlaunchOptionsパラメータを使用しますローカル通知のためにアプリが起動したかどうかを確認してください。

2番目は、アプリが現在実行中(アクティブまたは非アクティブ)のときです。 application:didReceiveLocalNotification:メソッドのNSApplicationのapplicationStateプロパティをチェックすると、アプリが非アクティブかどうかを確認できます。

2
- (void)sendNotification 
{ 
    UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
// notification.repeatInterval = NSDayCalendarUnit; 
    localNotification.fireDate = vwPicker.date; 
    localNotification.alertBody = txtAlarmTitle.text; 
    localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
    localNotification.userInfo = @{@"Title": txtAlarmTitle.text}; 
    localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
} 


- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
    [self handleNotification:notification application:application]; 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UILocalNotification *localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 
    if (localNotification) 
     [self handleNotification:localNotification application:application]; 

    return YES; 
} 

-(void)handleNotification: (UILocalNotification *)notification application:(UIApplication *)application 
{ 
    NSString *title = [notification.userInfo objectForKey:@"Title"]; 

    [[[UIAlertView alloc]initWithTitle:@"Smart Alarm" message:title delegate:self cancelButtonTitle:@"Answer the Teaser" otherButtonTitles: nil] show]; 

    application.applicationIconBadgeNumber = 0; 
} 
関連する問題