アプリがフォアグランドにあり、現在iPhone SDKで動作しているときにローカル通知が表示されますか?iPhone SDKのフォアグラウンドでのローカル通知
答えて
いいえ、あなたはappdelegateで通知を受け取ります。
- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification {
//Place your code to handle the notification here.
}
アプリは現在、フォアグラウンドで次の関数は、デリゲートに呼び出されますされている場合:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)Notifikation
あなたがalertviewを表示することを決定することができますが、標準のものは、それ自体では表示されません
これは、アプリケーションが既に実行されていたかどうかにかかわらず呼び出されます。 –
ユーザーが「開く」ボタンをクリックした場合のみ... – Bastian
地元の通知とほぼ同じアニメーションを作成するためのライブラリを作成しました。
このチェック: https://github.com/OpenFibers/OTNotification
デモ:
そして、あなたは
- (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];
}
でメッセージを受信したとき、あなたは、この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];
}
}
スウィフト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
}
}
どうもありがとうございました。今、私はアプリケーションが既に実行されているときに通知の代わりに使用できるように、アプリケーションdidReceiveLocalNotificationメソッドでUIAlertViewを保持しています。しかし、アプリがバックグラウンドにあり、通知が発生してアプリがフォアグラウンドになると、このメソッドが呼び出され、そのalertViewが表示されます。私がこれを避ける方法を私に教えてもらえますか? –
これで、applicationWillEnterForeground:メソッドがあります。申し訳ありませんが、愚かな質問!どうもありがとう。 –
愚かな質問ではない - ちょうど私に私が探していた答えを与えた:-) –