2011-07-28 15 views

答えて

8

いいえ、あなたはappdelegateで通知を受け取ります。

- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification { 
    //Place your code to handle the notification here. 
} 
+0

どうもありがとうございました。今、私はアプリケーションが既に実行されているときに通知の代わりに使用できるように、アプリケーションdidReceiveLocalNotificationメソッドでUIAlertViewを保持しています。しかし、アプリがバックグラウンドにあり、通知が発生してアプリがフォアグラウンドになると、このメソッドが呼び出され、そのalertViewが表示されます。私がこれを避ける方法を私に教えてもらえますか? –

+0

これで、applicationWillEnterForeground:メソッドがあります。申し訳ありませんが、愚かな質問!どうもありがとう。 –

+0

愚かな質問ではない - ちょうど私に私が探していた答えを与えた:-) –

0

アプリは現在、フォアグラウンドで次の関数は、デリゲートに呼び出されますされている場合:

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

あなたがalertviewを表示することを決定することができますが、標準のものは、それ自体では表示されません

+1

これは、アプリケーションが既に実行されていたかどうかにかかわらず呼び出されます。 –

+0

ユーザーが「開く」ボタンをクリックした場合のみ... – Bastian

3

地元の通知とほぼ同じアニメーションを作成するためのライブラリを作成しました。

この

チェック: https://github.com/OpenFibers/OTNotification

デモ: enter image description here

enter image description here

そして、あなたは

- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification 
{ 
    OTNotificationManager *notificationManager = [OTNotificationManager defaultManager]; 
    OTNotificationMessage *notificationMessage = [[OTNotificationMessage alloc] init]; 
    notificationMessage.title = [self notificationTitle]; 
    notificationMessage.message = @"A notification. Touch me to hide me."; 
    [notificationManager postNotificationMessage:notificationMessage]; 
} 
2

でメッセージを受信したとき、あなたは、このLIBに新しいメッセージを投稿することができます受け入れられたアンサーは正しいですが、十分ではありませんOあなたがチェックする必要が

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

からすべての通知を受信し、ユーザーに何かを示し、それが現在の通知かではありません。 別の通知が発生することがあります(キャンセルなど)。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { 
    if (fabs([[NSDate date] timeIntervalSinceDate:[notification fireDate]]) <= 0.5f) 
    { 
     [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Notification alert", @"") 
            message:notification.alertBody 
            delegate:self 
          cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];  
    } 
} 
0

スウィフト2.2::だから、あなたがチェックする必要があり、それが何を除いてある

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { 
    var state = application.applicationState 
    if state == .Active { 
     // handle the notification, e.g. show an alert 
    } 
} 

スウィフト3.0:

func application(_ application: UIApplication, didReceive notification: UILocalNotification) { 
    var state: UIApplicationState = application.applicationState 
    if state == .active { 
     // handle the notification, e.g. show an alert 
    } 
}