2012-10-09 15 views
5

私のアプリの機能の1つは、ユーザーがアプリからログアウトしたときに遠隔プッシュ通知からユーザーを登録解除することです。デバイスが飛行機(オフライン)モードの間にユーザーがログアウトすると、プッシュ通知からアプリを登録解除する方法はありますか?IOS unregisterForRemoteNotificationsは飛行機モードでは機能しません

私はこのコードを試しましたが、オンラインに戻ったときにも通知を受け取ります。 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

航空機モードのときに通知センターからアプリを削除する方法を教えてください。

+1

登録を解除するためにインターネットに接続する必要はありませんか? – DGund

+0

@DGund私は同じ誤解の下にいましたが、実際には通知を登録解除するためにオンラインにする必要があります。接続していないときに登録を解除しても、通知が届きます。 – user1732255

答えて

0

フラグまたは類似した何かを追加し、あなたが呼び出すとき、(あなたがShouldRecallUnregisterのように、好きなそれを呼び出す)

[[UIApplication sharedApplication] unregisterForRemoteNotifications];

何のインターネットコネクションが存在しない場合は、YESに設定

、およびそれを残します登録抹消が行われていればNO。 UserDefaults[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ShouldRecallUnregister"];)で

店、それが、例えばapplicationDidBecomeActive:にその値を確認します(または、それが最良のあなたのアプリに合った場所)。

はいの場合は、[[UIApplication sharedApplication] unregisterForRemoteNotifications];にもう一度お電話ください。

+0

このように、airplanemodeスイッチをオフにしてアプリケーションを有効にすると、時間枠内でさらに通知が届きます。 – ilmiacs

+0

解決に感謝します。 unregisterForRemoteNotificationsは、登録解除が正常に行われたかどうかを追跡するためのイベントコールを戻しません。それを追跡する方法はありますか? – user1732255

+0

@rdurandこのソリューションは、ユーザーがアプリからログアウトすると通知を受け取るべきではないため、私の要件ではないかもしれません。このソリューションでは、登録解除はユーザーがアプリを再起動したり、フォアグラウンドに持ってこなかった場合にのみ完了します。それまでは通知を受け取ります。それ以上の痩せはありますか? – user1732255

2

アップルはリモートプッシュ通知を制御します。オフラインの場合は、論理的に無効にすることはできません。 Appleが初めてあなたをオンラインで見て、プッシュが無効になっていないときは、プッシュを送信します。アップルがユーザーに送るプッシュをiDeviceに表示させないようにする方法はありません。アプリの手にはないからです。

したがって、1つの可能性があります。デバイスが再びオンラインになった後、すぐにプッシュを無効にする必要があります。それでも、運が良ければ、Appleが最初に得たメッセージ、オンラインであること、プッシュを無効にすることの問題です。また、Appleがオフラインでデバイスに送信したかった通知はどうなるのかという疑問がある。とにかくオンラインのときに再送信するのか、最初に無効にするときには破棄しますか?知りません。あなたは研究をする必要があります。

唯一の可能性は、ユーザーがオンラインになっている間にアプリがバックグラウンドにある場合です。システム通知に応答できるようにするには、アプリが停止するのを防ぐ必要があります(here'sこれを達成する方法)。あなたが必要とする通知は、オンラインステータスの変更の通知です、私はそれが存在することを知っているだけです。 This resourceが役に立ちます。端末がオンラインになると、アプリがバックグラウンドで待機している(中断されていない)ことをアプリに通知します。次に、frmリモートプッシュの登録をただちに解除することで反応することができます。

これは、おそらくその方向で達成できる最高のものです。お役に立てれば。

+0

Upvote、あなたの解決策は正当だと思われます。 – rdurand

関連する問題