私はちょうどxcodeをダウンロードして、ローカル通知の例を作ろうとしています。問題は、ローカル通知がシミュレータで機能するかどうかです。
ありがとうございました
はい、ローカル通知はシミュレータで機能します。ただし、アプリがフォアグラウンドにあるときに通知を表示する場合は、アプリのデリゲートに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];
テストコードを正しく実装しておらず、アプリの実行中にイベントを処理していないと考えるのは簡単です。
この古い質問に出くわした人のためにあなたが見つけるかもしれないもう一つの落とし穴: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
"
ローカル通知はシミュレータで機能しますが、プッシュ通知は機能しません
はいローカル通知はローカル通知で機能します。 ここをクリック Apple doc。
IPhoneシミュレータでローカル通知をテストするには、次の手順に従います。
これらの手順は、私が常にローカル通知を成功させるのに役立ちました。