私はLine/Whatsアプリに似たAndroidアプリ、つまり基本的にインスタントメッセンジャーに取り組んでいます。私が直面している問題は、ユーザーがログアウトした後でも、通知が表示されたままになることです。
つまり、ユーザーがログアウトすると通知を無効にする方法はありません。代わりに、通知が無効になることはなく、ログアウトした後も繰り返し発生し続けるため、アプリは非常に使用できなくなります。
アドバイスをいただければ幸いです。
ありがとう
ユーザーがアプリからログアウトしたら、NotificationManagerを使用してすべての通知をキャンセルします。
通知は、バックグラウンドでメッセージを受信するサービスを介して表示されていると思います。私が提案するのは次のとおりです。
a)これは最も簡単なはずです。ユーザーはログアウトしているので、バックグラウンドでバックグラウンドサービスを使用する必要がないため、stopSelf()
ログアウトのトリガーが作成されたときに呼び出しを行うことができます。アクティビティでログアウトアクションが発生している場合は、サービスの確立方法に応じて、ブロードキャストまたはメッセージのいずれかを介してサービスに通知できます。
b)他のことを試したい場合は、サービスクラスにフラグを追加しisUserLoggedOut
て、ログアウトワークフローを実行するときにtrueに設定できます。次に、ユーザーに通知しないかどうかを決定するときに、このフラグを確認できます。
private void showNotification () {
if (isUserLoggedOut)
return;
//shownotification otherwise
}
c)正直なところ、ログアウトワークフローを修正し、そのユーザーから既存の永続データ(アクセストークンなど)をクリアし、チャットのメインアクティビティを閉じてログオンアクティビティを再度表示し、メッセージの処理を無効にすることを強くお勧めします。ユーザーがサインアウトしていると仮定すると、サービスはどのアカウントのメッセージも処理してはならないため、サービス内で。