Skip to content

Commit 7182fc7

Browse files
committed
Updated Unity3d wrapper for new observer methods
1 parent 9e49642 commit 7182fc7

File tree

2 files changed

+57
-6
lines changed

2 files changed

+57
-6
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OSSubscriptionState.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,16 @@ public JSONObject toJSONObject() {
143143
JSONObject mainObj = new JSONObject();
144144

145145
try {
146-
mainObj.put("userId", userId);
147-
mainObj.put("pushToken", pushToken);
146+
if (userId != null)
147+
mainObj.put("userId", userId);
148+
else
149+
mainObj.put("userId", JSONObject.NULL);
150+
151+
if (pushToken != null)
152+
mainObj.put("pushToken", pushToken);
153+
else
154+
mainObj.put("pushToken", JSONObject.NULL);
155+
148156
mainObj.put("userSubscriptionSetting", userSubscriptionSetting);
149157
mainObj.put("subscribed", getSubscribed());
150158
}

OneSignalSDK/onesignal/src/unity/java/com/onesignal/OneSignalUnityProxy.java

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,13 @@
3737
import com.onesignal.OneSignal.IdsAvailableHandler;
3838
import com.onesignal.OneSignal.PostNotificationResponseHandler;
3939

40-
public class OneSignalUnityProxy implements NotificationOpenedHandler, NotificationReceivedHandler {
40+
public class OneSignalUnityProxy implements NotificationOpenedHandler, NotificationReceivedHandler, OSPermissionObserver, OSSubscriptionObserver {
4141

42-
private String unityListenerName;
42+
private static String unityListenerName;
4343
private static java.lang.reflect.Method unitySendMessage;
44+
45+
private static OSPermissionObserver permissionObserver;
46+
private static OSSubscriptionObserver subscriptionObserver;
4447

4548
@SuppressWarnings({ "unchecked", "rawtypes" })
4649
public OneSignalUnityProxy(String listenerName, String googleProjectNumber, String oneSignalAppId, int logLevel, int visualLogLevel) {
@@ -54,6 +57,10 @@ public OneSignalUnityProxy(String listenerName, String googleProjectNumber, Stri
5457

5558
OneSignal.sdkType = "unity";
5659
OneSignal.setLogLevel(logLevel, visualLogLevel);
60+
61+
OneSignal.Builder builder = OneSignal.getCurrentOrNewInitBuilder();
62+
builder.unsubscribeWhenNotificationsAreDisabled(true);
63+
builder.filterOtherGCMReceivers(true);
5764
OneSignal.init((Activity) unityPlayerClass.getField("currentActivity").get(null), googleProjectNumber, oneSignalAppId, this, this);
5865
} catch (Throwable t) {
5966
t.printStackTrace();
@@ -151,8 +158,44 @@ public void syncHashedEmail(String email) {
151158
public void clearOneSignalNotifications() {
152159
OneSignal.clearOneSignalNotifications();
153160
}
154-
155-
private void unitySafeInvoke(String method, String params) {
161+
public void cancelNotification(int id) {
162+
OneSignal.cancelNotification(id);
163+
}
164+
public void cancelGroupedNotifications(String group) {
165+
OneSignal.cancelGroupedNotifications(group);
166+
}
167+
168+
public void addPermissionObserver() {
169+
OneSignal.addPermissionObserver(this);
170+
}
171+
172+
public void removePermissionObserver() {
173+
OneSignal.removePermissionObserver(this);
174+
}
175+
176+
public void addSubscriptionObserver() {
177+
OneSignal.addSubscriptionObserver(this);
178+
}
179+
180+
public void removeSubscriptionObserver() {
181+
OneSignal.removeSubscriptionObserver(this);
182+
}
183+
184+
public String getPermissionSubscriptionState() {
185+
return OneSignal.getPermissionSubscriptionState().toJSONObject().toString();
186+
}
187+
188+
@Override
189+
public void onOSPermissionChanged(OSPermissionStateChanges stateChanges) {
190+
unitySafeInvoke("onOSPermissionChanged", stateChanges.toJSONObject().toString());
191+
}
192+
193+
@Override
194+
public void onOSSubscriptionChanged(OSSubscriptionStateChanges stateChanges) {
195+
unitySafeInvoke("onOSSubscriptionChanged", stateChanges.toJSONObject().toString());
196+
}
197+
198+
private static void unitySafeInvoke(String method, String params) {
156199
try {
157200
unitySendMessage.invoke(null, unityListenerName, method, params);
158201
} catch (Throwable t) {

0 commit comments

Comments
 (0)