com.onesignal.unity.ios 2.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Documentation~/com.onesignal.unity.ios.md +4 -0
- package/Editor/OneSignal.iOS.Editor.asmdef +14 -0
- package/Editor/OneSignal.iOS.Editor.asmdef.meta +7 -0
- package/Editor/PostProcessBuildPlayer_iOS.cs +399 -0
- package/Editor/PostProcessBuildPlayer_iOS.cs.meta +13 -0
- package/Editor.meta +8 -0
- package/LICENSE.md +129 -0
- package/LICENSE.md.meta +7 -0
- package/README.md +5 -0
- package/README.md.meta +7 -0
- package/Runtime/AssemblyInfo.cs +3 -0
- package/Runtime/AssemblyInfo.cs.meta +11 -0
- package/Runtime/OneSignal.iOS.asmdef +17 -0
- package/Runtime/OneSignal.iOS.asmdef.meta +7 -0
- package/Runtime/OneSignalIOS.cs +458 -0
- package/Runtime/OneSignalIOS.cs.meta +10 -0
- package/Runtime/OneSignalIOSInit.cs +12 -0
- package/Runtime/OneSignalIOSInit.cs.meta +3 -0
- package/Runtime/Plugins/iOS/Info.plist +31 -0
- package/Runtime/Plugins/iOS/Info.plist.meta +9 -0
- package/Runtime/Plugins/iOS/NotificationService.h +13 -0
- package/Runtime/Plugins/iOS/NotificationService.h.meta +26 -0
- package/Runtime/Plugins/iOS/NotificationService.m +40 -0
- package/Runtime/Plugins/iOS/NotificationService.m.meta +36 -0
- package/Runtime/Plugins/iOS/OneSignal.h +617 -0
- package/Runtime/Plugins/iOS/OneSignal.h.meta +26 -0
- package/Runtime/Plugins/iOS/OneSignalUnityRuntime.m +542 -0
- package/Runtime/Plugins/iOS/OneSignalUnityRuntime.m.meta +24 -0
- package/Runtime/Plugins/iOS/libOneSignal.a +0 -0
- package/Runtime/Plugins/iOS/libOneSignal.a.meta +21 -0
- package/Runtime/Plugins/iOS.meta +9 -0
- package/Runtime/Plugins.meta +8 -0
- package/Runtime.meta +8 -0
- package/package.json +35 -0
- package/package.json.meta +7 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: acee050ac0f234be5a68a8a16f4b7324
|
|
3
|
+
timeCreated: 1521138854
|
|
4
|
+
licenseType: Free
|
|
5
|
+
PluginImporter:
|
|
6
|
+
externalObjects: {}
|
|
7
|
+
serializedVersion: 2
|
|
8
|
+
iconMap: {}
|
|
9
|
+
executionOrder: {}
|
|
10
|
+
isPreloaded: 0
|
|
11
|
+
isOverridable: 0
|
|
12
|
+
platformData:
|
|
13
|
+
- first:
|
|
14
|
+
Any:
|
|
15
|
+
second:
|
|
16
|
+
enabled: 1
|
|
17
|
+
settings: {}
|
|
18
|
+
- first:
|
|
19
|
+
Editor: Editor
|
|
20
|
+
second:
|
|
21
|
+
enabled: 0
|
|
22
|
+
settings:
|
|
23
|
+
DefaultValueInitialized: true
|
|
24
|
+
userData:
|
|
25
|
+
assetBundleName:
|
|
26
|
+
assetBundleVariant:
|
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Modified MIT License
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2017 OneSignal
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* 1. The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* 2. All copies of substantial portions of the Software may only be used in connection
|
|
17
|
+
* with services provided by OneSignal.
|
|
18
|
+
*
|
|
19
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
25
|
+
* THE SOFTWARE.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
#import "OneSignal.h"
|
|
29
|
+
#import <objc/runtime.h>
|
|
30
|
+
|
|
31
|
+
char* os_cStringCopy(const char* string) {
|
|
32
|
+
if (string == NULL)
|
|
33
|
+
return NULL;
|
|
34
|
+
|
|
35
|
+
char* res = (char*)malloc(strlen(string) + 1);
|
|
36
|
+
strcpy(res, string);
|
|
37
|
+
|
|
38
|
+
return res;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
NSString* CreateNSString(const char* string) {
|
|
42
|
+
return [NSString stringWithUTF8String: string ? string : ""];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
char* unityListener = nil;
|
|
46
|
+
char* appId;
|
|
47
|
+
OSNotificationOpenedResult* actionNotification;
|
|
48
|
+
|
|
49
|
+
static Class getClassWithProtocolInHierarchy(Class searchClass, Protocol* protocolToFind) {
|
|
50
|
+
if (!class_conformsToProtocol(searchClass, protocolToFind)) {
|
|
51
|
+
if ([searchClass superclass] == [NSObject class])
|
|
52
|
+
return nil;
|
|
53
|
+
|
|
54
|
+
Class foundClass = getClassWithProtocolInHierarchy([searchClass superclass], protocolToFind);
|
|
55
|
+
if (foundClass)
|
|
56
|
+
return foundClass;
|
|
57
|
+
|
|
58
|
+
return searchClass;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return searchClass;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static void injectSelector(Class newClass, SEL newSel, Class addToClass, SEL makeLikeSel) {
|
|
65
|
+
Method newMeth = class_getInstanceMethod(newClass, newSel);
|
|
66
|
+
IMP imp = method_getImplementation(newMeth);
|
|
67
|
+
const char* methodTypeEncoding = method_getTypeEncoding(newMeth);
|
|
68
|
+
|
|
69
|
+
BOOL successful = class_addMethod(addToClass, makeLikeSel, imp, methodTypeEncoding);
|
|
70
|
+
if (!successful) {
|
|
71
|
+
class_addMethod(addToClass, newSel, imp, methodTypeEncoding);
|
|
72
|
+
newMeth = class_getInstanceMethod(addToClass, newSel);
|
|
73
|
+
|
|
74
|
+
Method orgMeth = class_getInstanceMethod(addToClass, makeLikeSel);
|
|
75
|
+
|
|
76
|
+
method_exchangeImplementations(orgMeth, newMeth);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const char* dictionaryToJsonChar(NSDictionary* dictionaryToConvert) {
|
|
81
|
+
if (!dictionaryToConvert)
|
|
82
|
+
return [NSString new].UTF8String;
|
|
83
|
+
|
|
84
|
+
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryToConvert options:0 error:nil];
|
|
85
|
+
NSString* jsonRequestData = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
|
86
|
+
|
|
87
|
+
return jsonRequestData.UTF8String;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
char* dictionaryToJsonNonConstChar(NSDictionary* dictionaryToConvert) {
|
|
91
|
+
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryToConvert options:0 error:nil];
|
|
92
|
+
NSString* jsonRequestData = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
|
93
|
+
|
|
94
|
+
char* dyStr = malloc(sizeof(char) * jsonRequestData.length);
|
|
95
|
+
strcpy(dyStr, jsonRequestData.UTF8String);
|
|
96
|
+
|
|
97
|
+
return dyStr;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
NSString* dictionaryToNSString(NSDictionary* dict) {
|
|
101
|
+
return CreateNSString(dictionaryToJsonChar(dict));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@interface OSUnityPermissionAndSubscriptionObserver : NSObject<OSPermissionObserver, OSSubscriptionObserver, OSEmailSubscriptionObserver>
|
|
105
|
+
- (void)onOSPermissionChanged:(OSPermissionStateChanges*)stateChanges;
|
|
106
|
+
- (void)onOSSubscriptionChanged:(OSSubscriptionStateChanges*)stateChanges;
|
|
107
|
+
- (void)onOSEmailSubscriptionChanged:(OSEmailSubscriptionStateChanges *)stateChanges;
|
|
108
|
+
@end
|
|
109
|
+
|
|
110
|
+
@implementation OSUnityPermissionAndSubscriptionObserver
|
|
111
|
+
- (void)onOSPermissionChanged:(OSPermissionStateChanges*)stateChanges {
|
|
112
|
+
UnitySendMessage(unityListener, "onOSPermissionChanged", dictionaryToJsonChar([stateChanges toDictionary]));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
- (void)onOSSubscriptionChanged:(OSSubscriptionStateChanges*)stateChanges {
|
|
116
|
+
UnitySendMessage(unityListener, "onOSSubscriptionChanged", dictionaryToJsonChar([stateChanges toDictionary]));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
- (void)onOSEmailSubscriptionChanged:(OSEmailSubscriptionStateChanges *)stateChanges {
|
|
120
|
+
UnitySendMessage(unityListener, "onOSEmailSubscriptionChanged", dictionaryToJsonChar([stateChanges toDictionary]));
|
|
121
|
+
}
|
|
122
|
+
@end
|
|
123
|
+
|
|
124
|
+
static OSUnityPermissionAndSubscriptionObserver* osUnityObserver;
|
|
125
|
+
|
|
126
|
+
@implementation UIApplication(OneSignalUnityPush)
|
|
127
|
+
|
|
128
|
+
+ (void)load {
|
|
129
|
+
method_exchangeImplementations(class_getInstanceMethod(self, @selector(setDelegate:)), class_getInstanceMethod(self, @selector(setOneSignalUnityDelegate:)));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
static Class delegateClass = nil;
|
|
133
|
+
|
|
134
|
+
- (void) setOneSignalUnityDelegate:(id<UIApplicationDelegate>)delegate {
|
|
135
|
+
if (delegateClass) {
|
|
136
|
+
[self setOneSignalUnityDelegate:delegate];
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
delegateClass = getClassWithProtocolInHierarchy([delegate class], @protocol(UIApplicationDelegate));
|
|
141
|
+
|
|
142
|
+
injectSelector(self.class, @selector(oneSignalApplication:didFinishLaunchingWithOptions:), delegateClass, @selector(application:didFinishLaunchingWithOptions:));
|
|
143
|
+
[self setOneSignalUnityDelegate:delegate];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
- (BOOL)oneSignalApplication:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
|
|
147
|
+
initOneSignalObject(launchOptions, nil, 1, true, false, true);
|
|
148
|
+
|
|
149
|
+
if ([self respondsToSelector:@selector(oneSignalApplication:didFinishLaunchingWithOptions:)])
|
|
150
|
+
return [self oneSignalApplication:application didFinishLaunchingWithOptions:launchOptions];
|
|
151
|
+
|
|
152
|
+
return YES;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
void processNotificationOpened(NSString* openString) {
|
|
156
|
+
UnitySendMessage(unityListener, "onPushNotificationOpened", [openString UTF8String]);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
void processNotificationReceived(NSString* notificationString) {
|
|
160
|
+
UnitySendMessage(unityListener, "onPushNotificationReceived", [notificationString UTF8String]);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
void processInAppMessageClicked(char* inAppMessageActionString) {
|
|
164
|
+
UnitySendMessage(unityListener, "onInAppMessageClicked", inAppMessageActionString);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
char* createInAppMessageJsonString(OSInAppMessageAction* action) {
|
|
168
|
+
return os_cStringCopy(dictionaryToJsonChar(
|
|
169
|
+
@{
|
|
170
|
+
@"click_name" : action.clickName ? action.clickName : @"",
|
|
171
|
+
@"click_url" : action.clickUrl ? action.clickUrl.absoluteString : @"",
|
|
172
|
+
@"first_click" : @(action.firstClick),
|
|
173
|
+
@"closes_message" : @(action.closesMessage)
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
void initOneSignalObject(NSDictionary* launchOptions, const char* appId, int displayOption, BOOL inAppLaunchURL, BOOL autoPrompt, BOOL fromColdStart) {
|
|
178
|
+
|
|
179
|
+
NSString* appIdStr = (appId ? [NSString stringWithUTF8String: appId] : nil);
|
|
180
|
+
|
|
181
|
+
[OneSignal setValue:@"unity" forKey:@"mSDKType"];
|
|
182
|
+
|
|
183
|
+
[OneSignal initWithLaunchOptions:launchOptions appId:appIdStr handleNotificationReceived:^(OSNotification* notification) {
|
|
184
|
+
if (unityListener)
|
|
185
|
+
processNotificationReceived([notification stringify]);
|
|
186
|
+
} handleNotificationAction:^(OSNotificationOpenedResult* openResult) {
|
|
187
|
+
actionNotification = openResult;
|
|
188
|
+
if (unityListener)
|
|
189
|
+
processNotificationOpened([openResult stringify]);
|
|
190
|
+
} settings:@{kOSSettingsKeyAutoPrompt: @(autoPrompt),
|
|
191
|
+
kOSSettingsKeyInFocusDisplayOption: @(displayOption),
|
|
192
|
+
kOSSettingsKeyInAppLaunchURL: @(inAppLaunchURL),
|
|
193
|
+
@"kOSSettingsKeyInOmitNoAppIdLogging": @(fromColdStart)}];
|
|
194
|
+
|
|
195
|
+
[OneSignal setInAppMessageClickHandler:^(OSInAppMessageAction* action) {
|
|
196
|
+
processInAppMessageClicked(createInAppMessageJsonString(action));
|
|
197
|
+
}];
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
void _init(const char* listenerName, const char* appId, BOOL autoPrompt, BOOL inAppLaunchURL, int displayOption, int logLevel, int visualLogLevel, bool requiresUserPrivacyConsent) {
|
|
201
|
+
[OneSignal setRequiresUserPrivacyConsent:requiresUserPrivacyConsent];
|
|
202
|
+
|
|
203
|
+
[OneSignal setLogLevel:logLevel visualLevel: visualLogLevel];
|
|
204
|
+
|
|
205
|
+
unsigned long len = strlen(listenerName);
|
|
206
|
+
unityListener = malloc(len + 1);
|
|
207
|
+
strcpy(unityListener, listenerName);
|
|
208
|
+
|
|
209
|
+
initOneSignalObject(nil, appId, displayOption, inAppLaunchURL, autoPrompt, false);
|
|
210
|
+
|
|
211
|
+
if (actionNotification)
|
|
212
|
+
processNotificationOpened([actionNotification stringify]);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
void _registerForPushNotifications() {
|
|
217
|
+
[OneSignal registerForPushNotifications];
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
void _sendTag(const char* tagName, const char* tagValue) {
|
|
221
|
+
[OneSignal sendTag:CreateNSString(tagName) value:CreateNSString(tagValue)];
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
void _sendTags(const char* tags) {
|
|
225
|
+
NSString* jsonString = CreateNSString(tags);
|
|
226
|
+
|
|
227
|
+
NSError* jsonError;
|
|
228
|
+
|
|
229
|
+
NSData* data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
|
230
|
+
NSDictionary* keyValuePairs = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError];
|
|
231
|
+
if (!jsonError)
|
|
232
|
+
[OneSignal sendTags:keyValuePairs];
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
void _deleteTag(const char* key) {
|
|
236
|
+
[OneSignal deleteTag:CreateNSString(key)];
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
void _deleteTags(const char* keys) {
|
|
240
|
+
NSString* jsonString = CreateNSString(keys);
|
|
241
|
+
|
|
242
|
+
NSError* jsonError;
|
|
243
|
+
|
|
244
|
+
NSData* data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
|
245
|
+
NSArray* kk = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
|
|
246
|
+
if (!jsonError)
|
|
247
|
+
[OneSignal deleteTags:kk];
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
void _getTags(const char* delegate) {
|
|
251
|
+
NSString* delegateId = CreateNSString(delegate);
|
|
252
|
+
|
|
253
|
+
[OneSignal getTags:^(NSDictionary* result) {
|
|
254
|
+
if (!result)
|
|
255
|
+
result = @{};
|
|
256
|
+
|
|
257
|
+
NSString* response = dictionaryToNSString(result);
|
|
258
|
+
NSDictionary *data = @{ @"delegate_id" : delegateId, @"response" : response };
|
|
259
|
+
|
|
260
|
+
UnitySendMessage(unityListener, "onTagsReceived", dictionaryToJsonChar(data));
|
|
261
|
+
}];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
void _idsAvailable(const char* delegate) {
|
|
265
|
+
NSString* delegateId = CreateNSString(delegate);
|
|
266
|
+
|
|
267
|
+
[OneSignal IdsAvailable:^(NSString* userId, NSString* pushToken) {
|
|
268
|
+
if (!userId)
|
|
269
|
+
userId = @"";
|
|
270
|
+
|
|
271
|
+
if (!pushToken)
|
|
272
|
+
pushToken = @"";
|
|
273
|
+
|
|
274
|
+
NSString* response = dictionaryToNSString(@{ @"userId" : userId, @"pushToken" : pushToken });
|
|
275
|
+
NSDictionary* data = @{ @"delegate_id" : delegateId, @"response" : response };
|
|
276
|
+
|
|
277
|
+
UnitySendMessage(unityListener, "onIdsAvailable", dictionaryToJsonChar(data));
|
|
278
|
+
}];
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
void _setSubscription(BOOL enable) {
|
|
282
|
+
[OneSignal setSubscription:enable];
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
void _postNotification(const char* delegateSuccess, const char* delegateFailure, const char* jsonData) {
|
|
286
|
+
NSString* delegateIdSuccess = CreateNSString(delegateSuccess);
|
|
287
|
+
NSString* delegateIdFailure = CreateNSString(delegateFailure);
|
|
288
|
+
|
|
289
|
+
NSString* delegate = dictionaryToNSString(@{ @"success" : delegateIdSuccess, @"failure" : delegateIdFailure });
|
|
290
|
+
|
|
291
|
+
NSString* jsonString = CreateNSString(jsonData);
|
|
292
|
+
NSError* jsonError;
|
|
293
|
+
|
|
294
|
+
NSData* data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
|
295
|
+
NSDictionary* jsd = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError];
|
|
296
|
+
if (!jsonError)
|
|
297
|
+
[OneSignal postNotification:jsd onSuccess:^(NSDictionary* results) {
|
|
298
|
+
if (!results)
|
|
299
|
+
results = @{};
|
|
300
|
+
|
|
301
|
+
NSString* response = dictionaryToNSString(results);
|
|
302
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
303
|
+
UnitySendMessage(unityListener, "onPostNotificationSuccess", dictionaryToJsonChar(data));
|
|
304
|
+
} onFailure:^(NSError* error) {
|
|
305
|
+
|
|
306
|
+
NSString* response = CreateNSString([[OneSignal parseNSErrorAsJsonString:error] UTF8String]);
|
|
307
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
308
|
+
UnitySendMessage(unityListener, "onPostNotificationFailed", dictionaryToJsonChar(data));
|
|
309
|
+
}];
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
void _syncHashedEmail(const char* email) {
|
|
313
|
+
[OneSignal syncHashedEmail:[NSString stringWithUTF8String: email]];
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
void _promptLocation() {
|
|
317
|
+
[OneSignal promptLocation];
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
void _setInFocusDisplayType(int type) {
|
|
321
|
+
OneSignal.inFocusDisplayType = type;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
void _addPermissionObserver() {
|
|
325
|
+
if (!osUnityObserver)
|
|
326
|
+
osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc];
|
|
327
|
+
[OneSignal addPermissionObserver:osUnityObserver];
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
void _removePermissionObserver() {
|
|
331
|
+
[OneSignal removePermissionObserver:osUnityObserver];
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
void _addSubscriptionObserver() {
|
|
335
|
+
if (!osUnityObserver)
|
|
336
|
+
osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc];
|
|
337
|
+
[OneSignal addSubscriptionObserver:osUnityObserver];
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
void _removeSubscriptionObserver() {
|
|
341
|
+
[OneSignal removeSubscriptionObserver:osUnityObserver];
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
void _addEmailSubscriptionObserver() {
|
|
345
|
+
if (!osUnityObserver)
|
|
346
|
+
osUnityObserver = [OSUnityPermissionAndSubscriptionObserver alloc];
|
|
347
|
+
[OneSignal addEmailSubscriptionObserver:osUnityObserver];
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
void _removeEmailSubscriptionObserver() {
|
|
351
|
+
[OneSignal removeEmailSubscriptionObserver:osUnityObserver];
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
char* _getPermissionSubscriptionState() {
|
|
355
|
+
return dictionaryToJsonNonConstChar([[OneSignal getPermissionSubscriptionState] toDictionary]);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
void _promptForPushNotificationsWithUserResponse() {
|
|
359
|
+
[OneSignal promptForPushNotificationsWithUserResponse:^(BOOL accepted) {
|
|
360
|
+
UnitySendMessage(unityListener, "onPromptForPushNotificationsWithUserResponse", (accepted ? @"true" : @"false").UTF8String);
|
|
361
|
+
}];
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
void _setOneSignalLogLevel(int logLevel, int visualLogLevel) {
|
|
365
|
+
[OneSignal setLogLevel:logLevel visualLevel: visualLogLevel];
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
void _setUnauthenticatedEmail(const char* delegateSuccess, const char* delegateFailure, const char* email) {
|
|
369
|
+
NSString* delegateIdSuccess = CreateNSString(delegateSuccess);
|
|
370
|
+
NSString* delegateIdFailure = CreateNSString(delegateFailure);
|
|
371
|
+
|
|
372
|
+
NSString* delegate = dictionaryToNSString(@{ @"success" : delegateIdSuccess, @"failure" : delegateIdFailure });
|
|
373
|
+
|
|
374
|
+
[OneSignal setEmail:CreateNSString(email) withSuccess:^{
|
|
375
|
+
NSString* response = dictionaryToNSString(@{ @"status" : @"success" });
|
|
376
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
377
|
+
UnitySendMessage(unityListener, "onSetEmailSuccess", dictionaryToJsonChar(data));
|
|
378
|
+
} withFailure:^(NSError *error) {
|
|
379
|
+
NSString* response = CreateNSString([[OneSignal parseNSErrorAsJsonString:error] UTF8String]);
|
|
380
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
381
|
+
UnitySendMessage(unityListener, "onSetEmailFailure", dictionaryToJsonChar(data));
|
|
382
|
+
}];
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
void _setEmail(const char* delegateSuccess, const char* delegateFailure, const char *email, const char *emailAuthCode) {
|
|
386
|
+
NSString* delegateIdSuccess = CreateNSString(delegateSuccess);
|
|
387
|
+
NSString* delegateIdFailure = CreateNSString(delegateFailure);
|
|
388
|
+
|
|
389
|
+
NSString* delegate = dictionaryToNSString(@{ @"success" : delegateIdSuccess, @"failure" : delegateIdFailure });
|
|
390
|
+
|
|
391
|
+
[OneSignal setEmail:CreateNSString(email) withEmailAuthHashToken:CreateNSString(emailAuthCode) withSuccess:^{
|
|
392
|
+
NSString* response = dictionaryToNSString(@{ @"status" : @"success" });
|
|
393
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
394
|
+
UnitySendMessage(unityListener, "onSetEmailSuccess", dictionaryToJsonChar(data));
|
|
395
|
+
} withFailure:^(NSError *error) {
|
|
396
|
+
NSString* response = CreateNSString([[OneSignal parseNSErrorAsJsonString:error] UTF8String]);
|
|
397
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
398
|
+
UnitySendMessage(unityListener, "onSetEmailFailure", dictionaryToJsonChar(data));
|
|
399
|
+
}];
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
void _logoutEmail(const char* delegateSuccess, const char* delegateFailure) {
|
|
403
|
+
NSString* delegateIdSuccess = CreateNSString(delegateSuccess);
|
|
404
|
+
NSString* delegateIdFailure = CreateNSString(delegateFailure);
|
|
405
|
+
|
|
406
|
+
NSString* delegate = dictionaryToNSString(@{ @"success" : delegateIdSuccess, @"failure" : delegateIdFailure });
|
|
407
|
+
|
|
408
|
+
[OneSignal logoutEmailWithSuccess:^{
|
|
409
|
+
NSString* response = dictionaryToNSString(@{ @"status" : @"success" });
|
|
410
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
411
|
+
UnitySendMessage(unityListener, "onLogoutEmailSuccess", dictionaryToJsonChar(data));
|
|
412
|
+
} withFailure:^(NSError *error) {
|
|
413
|
+
NSString* response = CreateNSString([[OneSignal parseNSErrorAsJsonString:error] UTF8String]);
|
|
414
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
415
|
+
UnitySendMessage(unityListener, "onLogoutEmailFailure", dictionaryToJsonChar(data));
|
|
416
|
+
}];
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
void _userDidProvideConsent(bool consent) {
|
|
420
|
+
[OneSignal consentGranted:consent];
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
bool _userProvidedConsent() {
|
|
424
|
+
return ![OneSignal requiresUserPrivacyConsent];
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
void _setRequiresUserPrivacyConsent(bool required) {
|
|
428
|
+
[OneSignal setRequiresUserPrivacyConsent:required];
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
void _setLocationShared(bool shared) {
|
|
432
|
+
[OneSignal setLocationShared:shared];
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
void _setExternalUserId(const char* delegate, const char *externalId) {
|
|
436
|
+
NSString* delegateId = CreateNSString(delegate);
|
|
437
|
+
[OneSignal setExternalUserId:CreateNSString(externalId) withCompletion:^(NSDictionary *results) {
|
|
438
|
+
NSString* response = dictionaryToNSString(results);
|
|
439
|
+
NSDictionary* data = @{ @"delegate_id" : delegateId, @"response" : response };
|
|
440
|
+
UnitySendMessage(unityListener, "onExternalUserIdUpdateCompletion", dictionaryToJsonChar(data));
|
|
441
|
+
}];
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
void _setExternalUserIdWithAuthToken(const char* delegateSuccess, const char* delegateFailure, const char *externalId, const char *authHashToken) {
|
|
445
|
+
NSString* delegateIdSuccess = CreateNSString(delegateSuccess);
|
|
446
|
+
NSString* delegateIdFailure = CreateNSString(delegateFailure);
|
|
447
|
+
|
|
448
|
+
NSString* delegate = dictionaryToNSString(@{ @"success" : delegateIdSuccess, @"failure" : delegateIdFailure });
|
|
449
|
+
|
|
450
|
+
[OneSignal setExternalUserId:CreateNSString(externalId) withExternalIdAuthHashToken:CreateNSString(authHashToken) withSuccess:^(NSDictionary *results) {
|
|
451
|
+
NSString* response = dictionaryToNSString(results);
|
|
452
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
453
|
+
UnitySendMessage(unityListener, "onExternalUserIdUpdateCompletion", dictionaryToJsonChar(data));
|
|
454
|
+
} withFailure: ^(NSError* error) {
|
|
455
|
+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"Set external user id Failure with error: %@", error]];
|
|
456
|
+
NSString* response = CreateNSString([[OneSignal parseNSErrorAsJsonString:error] UTF8String]);
|
|
457
|
+
NSDictionary* data = @{ @"delegate_id" : delegate, @"response" : response };
|
|
458
|
+
UnitySendMessage(unityListener, "onExternalUserIdUpdateCompletionFailure", dictionaryToJsonChar(data));
|
|
459
|
+
}];
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
void _removeExternalUserId(const char* delegate) {
|
|
463
|
+
NSString* delegateId = CreateNSString(delegate);
|
|
464
|
+
[OneSignal removeExternalUserId:^(NSDictionary *results) {
|
|
465
|
+
NSString* response = dictionaryToNSString(results);
|
|
466
|
+
NSDictionary* data = @{ @"delegate_id" : delegateId, @"response" : response };
|
|
467
|
+
UnitySendMessage(unityListener, "onExternalUserIdUpdateCompletion", dictionaryToJsonChar(data));
|
|
468
|
+
}];
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
void _addTriggers(char *triggers) {
|
|
472
|
+
NSString* jsonString = CreateNSString(triggers);
|
|
473
|
+
|
|
474
|
+
NSError* jsonError;
|
|
475
|
+
|
|
476
|
+
NSData* data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
|
477
|
+
NSDictionary* triggerKeyValuePairs = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError];
|
|
478
|
+
if (!jsonError)
|
|
479
|
+
[OneSignal addTriggers:triggerKeyValuePairs];
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
void _removeTriggerForKey(char *key) {
|
|
483
|
+
NSString* triggerKey = CreateNSString(key);
|
|
484
|
+
[OneSignal removeTriggerForKey:triggerKey];
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
void _removeTriggersForKeys(char *keys) {
|
|
488
|
+
NSString* jsonString = CreateNSString(keys);
|
|
489
|
+
|
|
490
|
+
NSError* jsonError;
|
|
491
|
+
|
|
492
|
+
NSData* data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
|
493
|
+
NSArray* triggerKeys = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
|
|
494
|
+
if (!jsonError)
|
|
495
|
+
[OneSignal removeTriggersForKeys:triggerKeys];
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
char* _getTriggerValueForKey(char *key) {
|
|
499
|
+
NSString* triggerKey = CreateNSString(key);
|
|
500
|
+
NSDictionary* triggerValue = @{ @"value" : [OneSignal getTriggerValueForKey:triggerKey] };
|
|
501
|
+
return os_cStringCopy(dictionaryToJsonChar(triggerValue));
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
void _pauseInAppMessages(bool pause) {
|
|
505
|
+
[OneSignal pauseInAppMessages:pause];
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
void _sendOutcome(const char* delegate, char* name) {
|
|
509
|
+
NSString* delegateId = CreateNSString(delegate);
|
|
510
|
+
NSString* outcomeName = CreateNSString(name);
|
|
511
|
+
|
|
512
|
+
[OneSignal sendOutcome:outcomeName onSuccess:^(OSOutcomeEvent *outcomeEvent) {
|
|
513
|
+
NSString* response = dictionaryToNSString(outcomeEvent.jsonRepresentation);
|
|
514
|
+
NSDictionary* data = @{ @"delegate_id" : delegateId, @"response" : response };
|
|
515
|
+
UnitySendMessage(unityListener, "onSendOutcomeSuccess", dictionaryToJsonChar(data));
|
|
516
|
+
}];
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
void _sendUniqueOutcome(const char* delegate, char* name) {
|
|
520
|
+
NSString* delegateId = CreateNSString(delegate);
|
|
521
|
+
NSString* outcomeName = CreateNSString(name);
|
|
522
|
+
|
|
523
|
+
[OneSignal sendUniqueOutcome:outcomeName onSuccess:^(OSOutcomeEvent *outcomeEvent) {
|
|
524
|
+
NSString* response = dictionaryToNSString(outcomeEvent.jsonRepresentation);
|
|
525
|
+
NSDictionary* data = @{ @"delegate_id" : delegateId, @"response" : response };
|
|
526
|
+
UnitySendMessage(unityListener, "onSendOutcomeSuccess", dictionaryToJsonChar(data));
|
|
527
|
+
}];
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
void _sendOutcomeWithValue(const char* delegate, char* name, float value) {
|
|
531
|
+
NSString* delegateId = CreateNSString(delegate);
|
|
532
|
+
NSString* outcomeName = CreateNSString(name);
|
|
533
|
+
NSNumber* outcomeValue = [NSNumber numberWithFloat:value];
|
|
534
|
+
|
|
535
|
+
[OneSignal sendOutcomeWithValue:outcomeName value:outcomeValue onSuccess:^(OSOutcomeEvent *outcomeEvent) {
|
|
536
|
+
NSString* response = dictionaryToNSString(outcomeEvent.jsonRepresentation);
|
|
537
|
+
NSDictionary* data = @{ @"delegate_id" : delegateId, @"response" : response };
|
|
538
|
+
UnitySendMessage(unityListener, "onSendOutcomeSuccess", dictionaryToJsonChar(data));
|
|
539
|
+
}];
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
@end
|