37
37
import com .onesignal .OneSignal .IdsAvailableHandler ;
38
38
import com .onesignal .OneSignal .PostNotificationResponseHandler ;
39
39
40
- public class OneSignalUnityProxy implements NotificationOpenedHandler , NotificationReceivedHandler {
40
+ public class OneSignalUnityProxy implements NotificationOpenedHandler , NotificationReceivedHandler , OSPermissionObserver , OSSubscriptionObserver {
41
41
42
- private String unityListenerName ;
42
+ private static String unityListenerName ;
43
43
private static java .lang .reflect .Method unitySendMessage ;
44
+
45
+ private static OSPermissionObserver permissionObserver ;
46
+ private static OSSubscriptionObserver subscriptionObserver ;
44
47
45
48
@ SuppressWarnings ({ "unchecked" , "rawtypes" })
46
49
public OneSignalUnityProxy (String listenerName , String googleProjectNumber , String oneSignalAppId , int logLevel , int visualLogLevel ) {
@@ -54,6 +57,10 @@ public OneSignalUnityProxy(String listenerName, String googleProjectNumber, Stri
54
57
55
58
OneSignal .sdkType = "unity" ;
56
59
OneSignal .setLogLevel (logLevel , visualLogLevel );
60
+
61
+ OneSignal .Builder builder = OneSignal .getCurrentOrNewInitBuilder ();
62
+ builder .unsubscribeWhenNotificationsAreDisabled (true );
63
+ builder .filterOtherGCMReceivers (true );
57
64
OneSignal .init ((Activity ) unityPlayerClass .getField ("currentActivity" ).get (null ), googleProjectNumber , oneSignalAppId , this , this );
58
65
} catch (Throwable t ) {
59
66
t .printStackTrace ();
@@ -151,8 +158,44 @@ public void syncHashedEmail(String email) {
151
158
public void clearOneSignalNotifications () {
152
159
OneSignal .clearOneSignalNotifications ();
153
160
}
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 ) {
156
199
try {
157
200
unitySendMessage .invoke (null , unityListenerName , method , params );
158
201
} catch (Throwable t ) {
0 commit comments