2017-11-20 6 views
0

私たちのアプリケーションは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);常に実行されていません。しかし、私はそれを最初の場所でより単純なシナリオで動作させることができません。

答えて

0
私が購読したりトグルを通じて以外の退会のユーザーが

私の代替ソリューションは、単に表示されてからの通知をブロックすることである(単にアプリを起動しながら、それを動作させるために管理していない)ことができませんでした

ユーザーが登録されているが設定で通知がオフになっている場合これはOnesignals NotificationExtenderServiceで行うことができます

public class NotificationCheck extends NotificationExtenderService { 
@Override 
protected boolean onNotificationProcessing(OSNotificationReceivedResult receivedResult) { 

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

    if (prefs.getBoolean("prefpush", true)) { 
     return false; 
    } else { return true; } 
} 
関連する問題