6

私のアプリには UILocalNotification を使用したアラーム機能があり、うまく機能します。ただし、ユーザーがアプリをアンインストールし、後で再インストールすると、すべての「中間」通知を一度に受け取ります。

私は電話しようとしました:

[[UIApplication sharedApplication] cancelAllLocalNotifications];

アプリが初めて起動された場合でも、 application:didFinishLaunchingWithOptions: が呼び出される前に通知が受信されるため、役に立ちません。

これは 4.0 でさらに悪化し、ユーザーがアプリを削除してもアラームが繰り返されましたが、少なくともそのバグは後のリリースで Apple によって修正されました。しかし、今私はこれで立ち往生しています。誰にもアイデアがありますか?

4

2 に答える 2

15

Apple によると、これはバグではありません (私はバグ レポートを提出しました)。システムは、ユーザーが誤ってアプリを削除した場合に備えて、アンインストールされたアプリの UILocalNotifications を 24 時間保持し、その期間内にアプリが再インストールされた場合は、前述の UILocalNotifications を復元します。

解決策は、次のように、最初の起動時にすべての UILocalNotifications を削除することです。

- (BOOL)          application: (UIApplication*) application
didFinishLaunchingWithOptions: (NSDictionary*)  launchOptions
{
  if (self.isFirstRun)
  {
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    self.firstRun = NO;
  }

  /* Other code here */
  ...
}

もちろん、独自のfirstRunセッターとゲッターを実装して、永続ストレージにフェッチ/保存しNSUserDefaultsます。

于 2013-02-25T10:14:22.977 に答える
6

これは実際にはiPhoneのバグです。アプリケーションを削除して後でインストールした場合も同じアプリ ID を持つため、アプリケーションを再インストールすると、アプリを開かなくても過去のすべてのローカル通知が発生します。

于 2011-02-07T15:31:48.607 に答える