web-dev-qa-db-ja.com

シミュレーターでのiphoneローカル通知

私はちょうどxcodeをダウンロードして、ローカル通知の例を作ろうとしています。問題は、ローカル通知がシミュレータで機能するかどうかです。

ありがとうございました

38
user349302

はい、ローカル通知はシミュレータで機能します。ただし、アプリがフォアグラウンドにあるときに通知を表示する場合は、アプリのデリゲートにapplication:didreceiveLocalNotificationを実装していることを確認してください。

- (void)application:(UIApplication *)application
    didReceiveLocalNotification:(UILocalNotification *)notification
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MyAlertView"
        message:notification.alertBody
        delegate:self cancelButtonTitle:@"OK"
        otherButtonTitles:nil];
    [alertView show];
    if (alertView) {
        [alertView release];
    }
}

それ以外の場合は、将来の通知のスケジュールを設定し、=アプリケーションを閉じるでAppleサンプル作業を確認してください:

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil) return;
NSDate *fireTime = [[NSDate date] addTimeInterval:10]; // adds 10 secs
localNotif.fireDate = fireTime;
localNotif.alertBody = @"Alert!";
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];

テストコードを正しく実装しておらず、アプリの実行中にイベントを処理していないと考えるのは簡単です。

67
bojolais

この古い質問に出くわした人のためにあなたが見つけるかもしれないもう一つの落とし穴:iOS 8は新しい通知許可を導入しました。そしてあなたのアプリは明示的にそれらを要求する必要があります。

あなたのAppDeligate.m

- (BOOL)application:(UIApplication *)application 
          didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //register local notifications
    if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    }

    //the rest of your normal code

    return YES;
}

そうしないと、通知は発生せず、ログに次のような素晴らしいメッセージが表示されます: "Attempting to schedule a local notification <UIConcreteLocalNotification: 0x7ae51b10>{... alert details ...} with an alert but haven't received permission from the user to display alerts "

20
mix3d

ローカル通知はシミュレータで機能しますが、プッシュ通知は機能しません

7
Aaron Saunders

はいローカル通知はローカル通知で機能します。 ここをクリック Apple doc。

1
apoorv shah

IPhoneシミュレータでローカル通知をテストするには、次の手順に従います。

  1. シミュレーターの時間はMacbookの時間とまったく同じであるため、Macの時間を目的の時間の1分前に変更します(ローカル通知の起動を期待している場合)。
  2. シミュレーターを再起動します(これは厄介ですが、iPhoneシミュレーターが現在の更新時間をすぐに取得できない場合があります)
  3. もう一度シミュレーターを実行します(アプリをxcodeから実行する場合があります。この場合、ホームボタンを押してアプリをバックグラウンドに送信する必要があります)。時間に達すると、通知を受け取る必要があります。

これらの手順は、私が常にローカル通知を成功させるのに役立ちました。

0
Munim Dibosh