0

このコードを使用してローカル通知を作成します。

        UILocalNotification *notification=[[UILocalNotification alloc]init];
        notification.soundName = @"new_friend_request.mp3";
        notification.repeatInterval = 0;
        notification.alertAction = @"Go to";
        notification.userInfo = [NSDictionary dictionaryWithObject:@"actionNotification" forKey:@"actionNotification"];
        notification.alertBody = @"Body";
        [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
        [notification release];

しかし、ホームボタンを押した後、iPhoneのホーム画面に通知アラートの本文が表示されません。

最初は通知が呼び出されないと思っていましたが、デバッグを使って通知が正しく呼び出されていることがわかりました。

だから、なぜそれが機能しないのかわかりません。

4

4 に答える 4

3

私の考えでは、問題はpresentLocalNotification、アプリがバックグラウンドにあるときにどのように電話をかけているのかということです。を呼び出すメソッドを使用NSTimerまたは呼び出すと、アプリがバックグラウンドにある場合は実際にはトリガーされず、アプリがフォアグラウンドに戻るまで延期されることがわかりました。実行していると思うコードが実際に実行されているのではないかと思います。dispatch_afterpresentLocalNotificationpresentLocalNotification

たとえば、私のテストでNSTimerは、コードのベースの呼び出しを次のの使用に置き換えたときにscheduleLocalNotification、アプリがバックグラウンドで実行されている場合に通知を受け取ります。したがって、次のように言う行を置き換えますpresentLocalNotification

// put all of your code configuring the UILocalNotification here
// but omit the presentLocalNotification, replacing it with the following code

// just for a test, fire the notification in 5 seconds

notification.fireDate = [[NSDate date] dateByAddingTimeInterval:5.0];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
于 2012-11-29T14:42:02.493 に答える
1

アプリの実行中に通知を直接トリガーすると、通知がツアーアプリのデリゲートに送信されるため、これは正常な動作です。

アプリはすでに実行されているため、通知センターは通知を処理しません。

于 2012-11-29T11:30:04.577 に答える
1

presentLocalNotificationNowメソッドを使用しています。これにより、アプリケーションが実行されている現時点で通知が投稿されます。アプリケーションが実行されている場合、ローカル通知はアプリケーションによって直接受信されるため、アラートや音は鳴りません。

ホームボタンを押すと、アラートや音は鳴りません。

presentLocalNotificationNow:

ローカル通知をすぐに提示します。

- (void)presentLocalNotificationNow:(UILocalNotification *)notification

パラメーター

notification

A local notification that the operating system presents for the application immediately, regardless of the value of the notification’s fireDate property.

バックグラウンド状態で実行されているアプリケーションは、着信チャット、メッセージ、または更新があるとすぐにローカル通知を表示できます。オペレーティングシステムは通知をコピーするため、スケジュールを設定したらリリースできます。

詳細については、 UIApplicationクラスリファレンスを参照してください

于 2012-11-29T11:32:54.360 に答える
0

問題は、iPhoneの設定で私のアプリケーションのローカル通知がオフになっていることでした。現在もpresentLocalNotificationを使用しており、すべてが機能しています。

私のアプリはソケットを使用しているため、私のアプリケーションは常にバックグラウンドで動作します。

でもとにかく、問題は私が原因だったので、私を助けようとした人々の時間を無駄にしてすみません。

于 2012-11-30T04:51:21.543 に答える