私たちのアプリケーションはParse.comを使用していましたが、今はOneSignalを実装しています。残念ながら、Parseからユーザーデータを失ってしまいましたが、既にオプトアウトしているユーザーには気にしません。OneSignal Unsubscribeユーザーが特定の条件でアプリケーションを起動したとき
簡単なトグルでオプトアウトが行われ、状態が保存されます。私の考えは、その状態を読み取ってから、OneSignal.setSubscription(false)を実行することでした。アプリケーションが開かれ、ユーザーがOneSignalに登録される(または既に登録されている)ので、以前に保存したトグルのために登録が解除されます。
しかしOneSignalは電話でAndroid StudioからAppを起動しているときにifステートメント内のコードをデバッグするとサーバー側で何もしません。また、私のデバイスが表示されているにもかかわらずデバッグ中に、「偽」を返し購読することができ
SharedPreferences prefs = getSharedPreferences("prefpush", Context.MODE_PRIVATE);
Boolean checkSub = prefs.getBoolean("prefpush", false);
if(!checkSub) {
OneSignal.setSubscription(false);
}
この部分:OneSignal私のデバイスを登録し、yesにサブスクリプションを設定しますが、次のコードが実行された場合に解除されません
status.getSubscriptionStatus().getSubscribed();
プッシュ通知を初期化しOneSignal一部:
OneSignal.startInit(this)
.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
.setNotificationReceivedHandler(new ExampleNotificationReceivedHandler())
.init();
通知を受け取ります
私は別のケースを実装します。つまり、ユーザーが最初に購読しているかどうかを確認するために、アプリケーション内で通知が無効になっているかどうかをチェックします(トグルが無効かどうかを確認します)ので、OneSignal.setSubscription(false);常に実行されていません。しかし、私はそれを最初の場所でより単純なシナリオで動作させることができません。