【发布时间】: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);不会经常执行。但我一开始就无法让它在更简单的场景中工作。
【问题讨论】: