2011-02-11 3 views
17

私はUILocalNotificationで本当に刺激的な問題を抱えています。UILocalNotificationはまったく機能していません

私がほぼ完了したアプリを完成させている間、私は何を試しても仕事のための地元の通知を得ることができなかったことに気付きました。

時間を無駄にするのではなく、私は基礎に戻って、私がそれらをまったく働かせるかどうかを見ることにしました。

私は、新しいXCodeのビューベースのアプリケーションを作成し、これに-viewDidLoadを置き換え:

- (void)viewDidLoad 
{ 
    UILocalNotification * theNotification = [[UILocalNotification alloc] init]; 
    theNotification.alertBody = @"Alert text"; 
    theNotification.alertAction = @"Ok"; 
    theNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; 

    [[UIApplication sharedApplication] scheduleLocalNotification:theNotification]; 
} 

しかし、また、全く何もしないこと。
アプリを起動してから10秒後に通知が表示されるはずですが、何も表示されません。
また、iPhoneとシミュレータの両方でこれをテストしました。

ここで本当に重要なことがありませんか? (私は、Appleのドキュメントを通して検索した、これはが起こっている理由として何かを見つけることができませんでした)アプリはが実行されている(または実行されていない場合

おかげ

答えて

43

UILocalNotification sが唯一自動的に表示されますバックグラウンドで)。アプリが実行中でローカル通知が発生すると、UIApplicationDelegate- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notificationメソッドが呼び出され、システムには何も表示されず、サウンドも再生されません。通知を表示する場合は、デリゲートメソッドで自分でUIAlertViewを作成します。

+1

パーフェクト。どうもありがとうございます。 –

+0

私はこの動作を変更する方法がないと推測しますか?通知センターは、アプリの実行中に発生する非同期通信イベントの情報をユーザーに表示するための優れた方法です。 – David

+0

別の問題を注意してください...タイムゾーンパラメータを設定すると、アラームが期待どおりになったときに効果が現れます。ただし、タイムゾーンを避けるためにUTCに明示的に設定すると、それはUTCからUTCに渡された砲火をまだ変更していますが、何とか違っています。 UTCのタイムゾーンパラメータを設定するときにアラートが発生していないことが判明しました。これをゼロに戻して、UTC時刻が正しく設定されていることを確認して問題を修正しました。 – sradforth

15

愚かでは私の個人的な冒険からわずかコメント...

私は同じ問題を持っていましたが、私の問題は、私はalertBodyに値を代入するのを忘れていたことでした。 alertBodyを設定しないと、通知は表示されません。

+0

私は長い間この「エラー」を狩ってきました!ありがとうございました!空でない表示可能な通知をスケジュールするのは間違いなので、少なくとも警告が必要です。 – Gerard

+1

幸せを復元:) – Ramesh

+0

OMG、@conarch、あなたは私の一日を救った:)私はそのような種類の男です:)それを指摘してくれてありがとう。 –

13
  1. fireDateは将来の時間である必要があります。
  2. アプリがバックグラウンドで実行されているか、閉じている必要があります。
  3. もう一つは、プッシュを許可するかどうかのクエリを表示することを忘れAppDelegateにコードの下に追加しないでください:

    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
        if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) { 
         UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; 
         [application registerUserNotificationSettings:settings]; 
        } 
    } 
    
+0

答えのコードをフォーマットしてください – Anton

+2

いいえ[Apple Documentation](https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/index.html #// apple_ref/doc/uid/TP40009565-CH1-SW13)、私は最初にローカル通知だけを持つAppの 'UserNotificationSettings'に登録する必要があることを読んだことがあります。これは私の手助けをしました。 –

関連する問題