【问题标题】:OneSignal Unsubscribe User on certain condition when App StartsOneSignal 在应用启动时在特定条件下取消订阅用户
【发布时间】:2018-05-04 02:14:23
【问题描述】:

我们的应用之前使用 Parse.com,现在我们正在实施 OneSignal。不幸的是,我们从 Parse 中丢失了用户数据,但我们不想打扰已经选择退出的用户。

选择退出是通过一个简单的切换来完成的,并且状态会被保存。我的想法是读取该状态,然后运行 ​​OneSignal.setSubscription(false);当应用程序打开并且用户注册 OneSignal(或已经注册)时,由于之前保存的切换,他被取消订阅。

但是,OneSignal 不会在服务器端执行任何操作,即使在调试 if 语句中的代码时在我的手机上从 Android Studio 启动应用程序时执行。

OneSignal 注册我的设备并将订阅设置为是,但如果执行以下代码,则不会取消订阅:

SharedPreferences prefs = getSharedPreferences("prefpush", Context.MODE_PRIVATE);
    Boolean checkSub = prefs.getBoolean("prefpush", false);
    if(!checkSub) {
        OneSignal.setSubscription(false);
    }

即使我的设备可见、已订阅并且可以接收通知,这部分也会在调试时返回“false”:

status.getSubscriptionStatus().getSubscribed();

初始化推送通知的 OneSignal 部分:

        OneSignal.startInit(this)
            .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
            .setNotificationReceivedHandler( new ExampleNotificationReceivedHandler() )
            .init();

我会实现另一种情况,即检查用户是否首先订阅但在应用程序内禁用了通知(检查切换是否被禁用),所以 OneSignal.setSubscription(false);不会经常执行。但我一开始就无法让它在更简单的场景中工作。

【问题讨论】:

    标签: android onesignal


    【解决方案1】:

    除了通过切换之外,我无法订阅或取消订阅用户(在启动应用程序时无法使其工作)

    我的替代解决方案是在用户订阅但在设置中关闭通知时简单地阻止通知出现。这可以通过 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; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 2018-09-01
      • 2021-03-03
      • 2011-12-15
      • 2017-06-21
      • 2017-04-07
      相关资源
      最近更新 更多