2012-03-02 9 views
2

UIApplicationでcancelAllLocalNotificationsメソッドがどのように機能するかは誰にも分かりますか?私は具体的にどのようにiOSをキャンセルするかを知っています。 App IDで知っていますか?それとも、何とかアプリのバージョン番号を使用していますか?UIApplication cancelAllLocalNotificationsはアプリのアップデート間でどのように動作しますか?

今私が経験していることは、予想以上に多くの通知です。これはワークフローです:アプリの終了時に

  • スケジュールの通知を開始

    1. はアプリ上のすべての通知をキャンセル
    2. *スケジュールする場合、「更新ムービー」リスト
    3. *スケジュール、スケジュールに通知情報を追加1日に1件の通知(電話を切断する前にXCodeのログ記録で確認)。

      1. は、通知の
      2. のみ1が理にかなっている(私の「更新ムービー」リストに表示さ一日あたり4通知を受信し、それはだから:今

    4. が、これは私が経験してるものですすべての私は「cancelAllLocalNotifications」方式のスケジューリング)

    以前、私は3に設定日あたりの通知の私の#は、その後、私はバージョン番号(たとえば1.1.0から1.1.1に更新)をしましたよと呼ばれる。

    通知の取り消しがアプリのバージョン/バンドルIDに基づいている場合は、新しい通知とともに通知が届きます。

    しかし、そうでなければ、iOSは以前のバージョン1.1.0からスケジュールされた通知をキャンセルすることを知っています。これらの通知がどこから来ているのかわかりません。

  • +0

    アプリの起動時に、どこでcancelAllLocalNoficationsを呼び出していますか? – vipinagg

    +0

    @vipinagg、良い点。私は2つの場所でそれを呼び出しています:(1)通知を受け取ったときにアプリケーションデリゲートで(バットから間違っていますが、2番目の発生箇所のb/cには関係ありません) (2) "applicationDidEnterBackground"メソッドでは、すべての通知をスケジュールする関数を呼び出し、最初に機能するものは、新しいものをすべてスケジュールする前にすべての通知をキャンセルすることです。しかし、良い点 - それはアプリケーションでのみ呼び出されたかどうか疑問に思った:didFinishLaunchingWithOptions: "applicationWillEnterForeground:"ではなく。 – thephatp

    +0

    このトピックに関する私の答えに従ってください。 [http://stackoverflow.com/a/42724415/1720559](http://stackoverflow.com/a/42724415/1720559) –

    答えて

    1

    私はローカルとリモートの通知は、アプリケーションID(AppleID + BundleID)に基づいていると思います。したがって、バージョンに関係なく、通知を受け取ることになります。私はこの実装に反対する議論と反対に議論を見ることができます。

    この機能に対応するための戦略が必要でしたか?

    +0

    はい、間違いなくそれを処理するための戦略が必要です。基本的には、ユーザーがアプリを更新する前に、スケジュールされたすべての通知をキャンセルする必要があります(新しいApp IDを持つb/c)。あるいは、これが可能であると私は疑う余地はないが、もしアプリケーションが更新された後でキャンセルを強制することができれば、それは十分だろう。 – thephatp