30
30
31
31
char * os_cStringCopy (const char * string) {
32
32
if (string == NULL )
33
- return NULL ;
33
+ return NULL ;
34
34
35
35
char * res = (char *)malloc (strlen (string) + 1 );
36
36
strcpy (res, string);
@@ -94,25 +94,27 @@ static void injectSelector(Class newClass, SEL newSel, Class addToClass, SEL mak
94
94
return dyStr;
95
95
}
96
96
97
+ NSString * dictionaryToNSString (NSDictionary * dict) {
98
+ return CreateNSString (dictionaryToJsonChar (dict));
99
+ }
97
100
98
-
99
- @interface OSUnityPermissionAndSubscriptionObserver : NSObject <OSPermissionObserver, OSSubscriptionObserver>
101
+ @interface OSUnityPermissionAndSubscriptionObserver : NSObject <OSPermissionObserver, OSSubscriptionObserver, OSEmailSubscriptionObserver>
100
102
- (void )onOSPermissionChanged : (OSPermissionStateChanges*)stateChanges ;
101
103
- (void )onOSSubscriptionChanged : (OSSubscriptionStateChanges*)stateChanges ;
102
104
- (void )onOSEmailSubscriptionChanged : (OSEmailSubscriptionStateChanges *)stateChanges ;
103
105
@end
104
106
105
107
@implementation OSUnityPermissionAndSubscriptionObserver
106
108
- (void )onOSPermissionChanged : (OSPermissionStateChanges*)stateChanges {
107
- UnitySendMessage (unityListener, " onOSPermissionChanged" , dictionaryToJsonChar ([stateChanges toDictionary ]));
109
+ UnitySendMessage (unityListener, " onOSPermissionChanged" , dictionaryToJsonChar ([stateChanges toDictionary ]));
108
110
}
109
111
110
112
- (void )onOSSubscriptionChanged : (OSSubscriptionStateChanges*)stateChanges {
111
- UnitySendMessage (unityListener, " onOSSubscriptionChanged" , dictionaryToJsonChar ([stateChanges toDictionary ]));
113
+ UnitySendMessage (unityListener, " onOSSubscriptionChanged" , dictionaryToJsonChar ([stateChanges toDictionary ]));
112
114
}
113
115
114
- - (void )onOSEmailSubscriptionStateChanged : (OSEmailSubscriptionStateChanges *)stateChanges {
115
- UnitySendMessage (unityListener, " onOSEmailSubscriptionStateChanged " , dictionaryToJsonChar ([stateChanges toDictionary ]));
116
+ - (void )onOSEmailSubscriptionChanged : (OSEmailSubscriptionStateChanges *)stateChanges {
117
+ UnitySendMessage (unityListener, " onOSEmailSubscriptionChanged " , dictionaryToJsonChar ([stateChanges toDictionary ]));
116
118
}
117
119
@end
118
120
@@ -134,8 +136,7 @@ - (void) setOneSignalUnityDelegate:(id<UIApplicationDelegate>)delegate {
134
136
135
137
delegateClass = getClassWithProtocolInHierarchy ([delegate class ], @protocol (UIApplicationDelegate));
136
138
137
- injectSelector (self.class , @selector (oneSignalApplication:didFinishLaunchingWithOptions: ),
138
- delegateClass, @selector (application:didFinishLaunchingWithOptions: ));
139
+ injectSelector (self.class , @selector (oneSignalApplication:didFinishLaunchingWithOptions: ), delegateClass, @selector (application:didFinishLaunchingWithOptions: ));
139
140
[self setOneSignalUnityDelegate: delegate];
140
141
}
141
142
@@ -162,11 +163,11 @@ void processInAppMessageClicked(char* inAppMessageActionString) {
162
163
163
164
char * createInAppMessageJsonString (OSInAppMessageAction* action) {
164
165
return os_cStringCopy (dictionaryToJsonChar (
165
- @{
166
- @" click_name" : action.clickName ,
167
- @" click_url" : action.clickUrl ? action.clickUrl .absoluteString : @" " ,
168
- @" first_click" : @(action.firstClick ),
169
- @" closes_message" : @(action.closesMessage )
166
+ @{
167
+ @" click_name" : action.clickName ,
168
+ @" click_url" : action.clickUrl ? action.clickUrl .absoluteString : @" " ,
169
+ @" first_click" : @(action.firstClick ),
170
+ @" closes_message" : @(action.closesMessage )
170
171
}));
171
172
}
172
173
@@ -177,17 +178,16 @@ void initOneSignalObject(NSDictionary* launchOptions, const char* appId, int dis
177
178
[OneSignal setValue: @" unity" forKey: @" mSDKType" ];
178
179
179
180
[OneSignal initWithLaunchOptions: launchOptions appId: appIdStr handleNotificationReceived: ^(OSNotification* notification) {
180
- if (unityListener)
181
- processNotificationReceived ([notification stringify ]);
182
- }
183
- handleNotificationAction: ^(OSNotificationOpenedResult* openResult) {
184
- actionNotification = openResult;
185
- if (unityListener)
186
- processNotificationOpened ([openResult stringify ]);
187
- } settings: @{kOSSettingsKeyAutoPrompt : @(autoPrompt),
188
- kOSSettingsKeyInFocusDisplayOption : @(displayOption),
189
- kOSSettingsKeyInAppLaunchURL : @(inAppLaunchURL),
190
- @" kOSSettingsKeyInOmitNoAppIdLogging" : @(fromColdStart)}];
181
+ if (unityListener)
182
+ processNotificationReceived ([notification stringify ]);
183
+ } handleNotificationAction: ^(OSNotificationOpenedResult* openResult) {
184
+ actionNotification = openResult;
185
+ if (unityListener)
186
+ processNotificationOpened ([openResult stringify ]);
187
+ } settings: @{kOSSettingsKeyAutoPrompt : @(autoPrompt),
188
+ kOSSettingsKeyInFocusDisplayOption : @(displayOption),
189
+ kOSSettingsKeyInAppLaunchURL : @(inAppLaunchURL),
190
+ @" kOSSettingsKeyInOmitNoAppIdLogging" : @(fromColdStart)}];
191
191
192
192
[OneSignal setInAppMessageClickHandler: ^(OSInAppMessageAction* action) {
193
193
processInAppMessageClicked (createInAppMessageJsonString (action));
@@ -244,38 +244,65 @@ void _deleteTags(const char* keys) {
244
244
[OneSignal deleteTags: kk];
245
245
}
246
246
247
- void _getTags () {
247
+ void _getTags (const char * delegate) {
248
+ NSString * delegateId = CreateNSString (delegate);
249
+
248
250
[OneSignal getTags: ^(NSDictionary * result) {
249
- UnitySendMessage (unityListener, " onTagsReceived" , dictionaryToJsonChar (result));
251
+ if (!result)
252
+ result = @{};
253
+
254
+ NSString * response = dictionaryToNSString (result);
255
+ NSDictionary *data = @{ @" delegate_id" : delegateId, @" response" : response };
256
+
257
+ UnitySendMessage (unityListener, " onTagsReceived" , dictionaryToJsonChar (data));
250
258
}];
251
259
}
252
260
253
- void _idsAvailable () {
261
+ void _idsAvailable (const char * delegate) {
262
+ NSString * delegateId = CreateNSString (delegate);
263
+
254
264
[OneSignal IdsAvailable: ^(NSString * userId, NSString * pushToken) {
265
+ if (!userId)
266
+ userId = @" " ;
267
+
255
268
if (!pushToken)
256
269
pushToken = @" " ;
257
270
258
- UnitySendMessage (unityListener, " onIdsAvailable" ,
259
- dictionaryToJsonChar (@{@" userId" : userId, @" pushToken" : pushToken}));
271
+ NSString * response = dictionaryToNSString (@{ @" userId" : userId, @" pushToken" : pushToken });
272
+ NSDictionary * data = @{ @" delegate_id" : delegateId, @" response" : response };
273
+
274
+ UnitySendMessage (unityListener, " onIdsAvailable" , dictionaryToJsonChar (data));
260
275
}];
261
276
}
262
277
263
278
void _setSubscription (BOOL enable) {
264
279
[OneSignal setSubscription: enable];
265
280
}
266
281
267
- void _postNotification (const char * jsonData) {
282
+ void _postNotification (const char * delegateSuccess, const char * delegateFailure, const char * jsonData) {
283
+ NSString * delegateIdSuccess = CreateNSString (delegateSuccess);
284
+ NSString * delegateIdFailure = CreateNSString (delegateFailure);
285
+
286
+ NSString * delegate = dictionaryToNSString (@{ @" success" : delegateIdSuccess, @" failure" : delegateIdFailure });
287
+
268
288
NSString * jsonString = CreateNSString (jsonData);
269
289
NSError * jsonError;
270
290
271
291
NSData * data = [jsonString dataUsingEncoding: NSUTF8StringEncoding];
272
292
NSDictionary * jsd = [NSJSONSerialization JSONObjectWithData: data options: kNilOptions error: &jsonError];
273
293
if (!jsonError)
274
294
[OneSignal postNotification: jsd onSuccess: ^(NSDictionary * results) {
275
- UnitySendMessage (unityListener, " onPostNotificationSuccess" , dictionaryToJsonChar (results));
295
+ if (!results)
296
+ results = @{};
297
+
298
+ NSString * response = dictionaryToNSString (results);
299
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
300
+ UnitySendMessage (unityListener, " onPostNotificationSuccess" , dictionaryToJsonChar (data));
276
301
} onFailure: ^(NSError * error) {
277
- NSString * parsedError = [OneSignal parseNSErrorAsJsonString: error];
278
- UnitySendMessage (unityListener, " onPostNotificationFailed" , [parsedError UTF8String ]);
302
+
303
+ NSString * response = CreateNSString ([[OneSignal parseNSErrorAsJsonString: error] UTF8String ]);
304
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
305
+ UnitySendMessage (unityListener, " onPostNotificationFailed" , dictionaryToJsonChar (data));
279
306
}];
280
307
}
281
308
@@ -288,33 +315,32 @@ void _promptLocation() {
288
315
}
289
316
290
317
void _setInFocusDisplayType (int type) {
291
- OneSignal.inFocusDisplayType = type;
318
+ OneSignal.inFocusDisplayType = type;
292
319
}
293
320
294
321
void _addPermissionObserver () {
295
- if (!osUnityObserver)
296
- osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc ];
297
- [OneSignal addPermissionObserver: osUnityObserver];
322
+ if (!osUnityObserver)
323
+ osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc ];
324
+ [OneSignal addPermissionObserver: osUnityObserver];
298
325
}
299
326
300
327
void _removePermissionObserver () {
301
- [OneSignal removePermissionObserver: osUnityObserver];
328
+ [OneSignal removePermissionObserver: osUnityObserver];
302
329
}
303
330
304
331
void _addSubscriptionObserver () {
305
- if (!osUnityObserver)
306
- osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc ];
307
- [OneSignal addSubscriptionObserver: osUnityObserver];
332
+ if (!osUnityObserver)
333
+ osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc ];
334
+ [OneSignal addSubscriptionObserver: osUnityObserver];
308
335
}
309
336
310
337
void _removeSubscriptionObserver () {
311
- [OneSignal removeSubscriptionObserver: osUnityObserver];
338
+ [OneSignal removeSubscriptionObserver: osUnityObserver];
312
339
}
313
340
314
341
void _addEmailSubscriptionObserver () {
315
342
if (!osUnityObserver)
316
343
osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc ];
317
-
318
344
[OneSignal addEmailSubscriptionObserver: osUnityObserver];
319
345
}
320
346
@@ -323,40 +349,67 @@ void _removeEmailSubscriptionObserver() {
323
349
}
324
350
325
351
char * _getPermissionSubscriptionState () {
326
- return dictionaryToJsonNonConstChar ([[OneSignal getPermissionSubscriptionState ] toDictionary ]);
352
+ return dictionaryToJsonNonConstChar ([[OneSignal getPermissionSubscriptionState ] toDictionary ]);
327
353
}
328
354
329
355
void _promptForPushNotificationsWithUserResponse () {
330
- [OneSignal promptForPushNotificationsWithUserResponse: ^(BOOL accepted) {
331
- UnitySendMessage (unityListener, " onPromptForPushNotificationsWithUserResponse" , (accepted ? @" true" : @" false" ).UTF8String );
332
- }];
356
+ [OneSignal promptForPushNotificationsWithUserResponse: ^(BOOL accepted) {
357
+ UnitySendMessage (unityListener, " onPromptForPushNotificationsWithUserResponse" , (accepted ? @" true" : @" false" ).UTF8String );
358
+ }];
333
359
}
334
360
335
361
void _setOneSignalLogLevel (int logLevel, int visualLogLevel) {
336
362
[OneSignal setLogLevel: logLevel visualLevel: visualLogLevel];
337
363
}
338
364
339
- void _setUnauthenticatedEmail (const char *email) {
365
+ void _setUnauthenticatedEmail (const char * delegateSuccess, const char * delegateFailure, const char * email) {
366
+ NSString * delegateIdSuccess = CreateNSString (delegateSuccess);
367
+ NSString * delegateIdFailure = CreateNSString (delegateFailure);
368
+
369
+ NSString * delegate = dictionaryToNSString (@{ @" success" : delegateIdSuccess, @" failure" : delegateIdFailure });
370
+
340
371
[OneSignal setEmail: CreateNSString (email) withSuccess: ^{
341
- UnitySendMessage (unityListener, " onSetEmailSuccess" , dictionaryToJsonChar (@{@" status" : @" success" }));
372
+ NSString * response = dictionaryToNSString (@{ @" status" : @" success" });
373
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
374
+ UnitySendMessage (unityListener, " onSetEmailSuccess" , dictionaryToJsonChar (data));
342
375
} withFailure: ^(NSError *error) {
343
- UnitySendMessage (unityListener, " onSetEmailFailure" , [[OneSignal parseNSErrorAsJsonString: error] UTF8String ]);
376
+ NSString * response = CreateNSString ([[OneSignal parseNSErrorAsJsonString: error] UTF8String ]);
377
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
378
+ UnitySendMessage (unityListener, " onSetEmailFailure" , dictionaryToJsonChar (data));
344
379
}];
345
380
}
346
381
347
- void _setEmail (const char *email, const char *emailAuthCode) {
382
+ void _setEmail (const char * delegateSuccess, const char * delegateFailure, const char *email, const char *emailAuthCode) {
383
+ NSString * delegateIdSuccess = CreateNSString (delegateSuccess);
384
+ NSString * delegateIdFailure = CreateNSString (delegateFailure);
385
+
386
+ NSString * delegate = dictionaryToNSString (@{ @" success" : delegateIdSuccess, @" failure" : delegateIdFailure });
387
+
348
388
[OneSignal setEmail: CreateNSString (email) withEmailAuthHashToken: CreateNSString (emailAuthCode) withSuccess: ^{
349
- UnitySendMessage (unityListener, " onSetEmailSuccess" , dictionaryToJsonChar (@{@" status" : @" success" }));
389
+ NSString * response = dictionaryToNSString (@{ @" status" : @" success" });
390
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
391
+ UnitySendMessage (unityListener, " onSetEmailSuccess" , dictionaryToJsonChar (data));
350
392
} withFailure: ^(NSError *error) {
351
- UnitySendMessage (unityListener, " onSetEmailFailure" , [[OneSignal parseNSErrorAsJsonString: error] UTF8String ]);
393
+ NSString * response = CreateNSString ([[OneSignal parseNSErrorAsJsonString: error] UTF8String ]);
394
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
395
+ UnitySendMessage (unityListener, " onSetEmailFailure" , dictionaryToJsonChar (data));
352
396
}];
353
397
}
354
398
355
- void _logoutEmail () {
399
+ void _logoutEmail (const char * delegateSuccess, const char * delegateFailure) {
400
+ NSString * delegateIdSuccess = CreateNSString (delegateSuccess);
401
+ NSString * delegateIdFailure = CreateNSString (delegateFailure);
402
+
403
+ NSString * delegate = dictionaryToNSString (@{ @" success" : delegateIdSuccess, @" failure" : delegateIdFailure });
404
+
356
405
[OneSignal logoutEmailWithSuccess: ^{
357
- UnitySendMessage (unityListener, " onLogoutEmailSuccess" , dictionaryToJsonChar (@{@" status" : @" success" }));
406
+ NSString * response = dictionaryToNSString (@{ @" status" : @" success" });
407
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
408
+ UnitySendMessage (unityListener, " onLogoutEmailSuccess" , dictionaryToJsonChar (data));
358
409
} withFailure: ^(NSError *error) {
359
- UnitySendMessage (unityListener, " onLogoutEmailFailure" , [[OneSignal parseNSErrorAsJsonString: error] UTF8String ]);
410
+ NSString * response = CreateNSString ([[OneSignal parseNSErrorAsJsonString: error] UTF8String ]);
411
+ NSDictionary * data = @{ @" delegate_id" : delegate, @" response" : response };
412
+ UnitySendMessage (unityListener, " onLogoutEmailFailure" , dictionaryToJsonChar (data));
360
413
}];
361
414
}
362
415
@@ -421,4 +474,25 @@ void _pauseInAppMessages(bool pause) {
421
474
[OneSignal pauseInAppMessages: pause];
422
475
}
423
476
477
+ void _sendOutcome (const char * delegate, char * name) {
478
+ NSString * delegateId = CreateNSString (delegate);
479
+
480
+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: @" Method sendOutcome() not implemented for iOS yet!" ];
481
+ return ;
482
+ }
483
+
484
+ void _sendUniqueOutcome (const char * delegate, char * name) {
485
+ NSString * delegateId = CreateNSString (delegate);
486
+
487
+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: @" Method sendUniqueOutcome() not implemented for iOS yet!" ];
488
+ return ;
489
+ }
490
+
491
+ void _sendOutcomeWithValue (const char * delegate, char * name, float value) {
492
+ NSString * delegateId = CreateNSString (delegate);
493
+
494
+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: @" Method sendOutcomeWithValue() not implemented for iOS yet!" ];
495
+ return ;
496
+ }
497
+
424
498
@end
0 commit comments