2017-11-20 17 views
0

우리 앱은 이전에 Parse.com을 사용했으며 지금은 OneSignal을 구현하고 있습니다. 불행히도 Parse에서 사용자 데이터를 잃어 버렸지 만 이미 선택 해제 한 사용자를 귀찮게하지 않으려합니다.OneSignal Unsubscribe 앱 시작시 특정 조건의 사용자

간단한 토글을 통해 탈퇴가 이루어지고 상태가 저장됩니다. 내 생각은 그 상태를 읽은 다음 OneSignal.setSubscription (false); 응용 프로그램이 열리고 사용자가 OneSignal에 등록 (또는 이미 등록됨) 될 때 이전에 저장 한 토글로 인해 등록이 취소됩니다.

그러나 OneSignal은 Phone의 Android Studio에서 App을 실행하는 중에 if 문 내의 코드를 디버깅하는 동안 서버 측에서 아무 것도하지 않습니다.

SharedPreferences prefs = getSharedPreferences("prefpush", Context.MODE_PRIVATE); 
    Boolean checkSub = prefs.getBoolean("prefpush", false); 
    if(!checkSub) { 
     OneSignal.setSubscription(false); 
    } 
내 장치가 보이는 경우에도 디버깅하는 동안이 제품은 또한 "false"를 반환

이 가입 할 수 있습니다 : 내 장치를 등록하고 yes로 구독을 설정하지만, 다음 코드가 실행되면 취소하지 않는 OneSignal

수신 통지 :

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; } 
}