1
1
#import " AdjustUnity.h"
2
+ #import " AdjustUnityDelegate.h"
2
3
3
4
#import " ADJEvent.h"
4
5
#import " ADJConfig.h"
5
6
6
7
@implementation AdjustUnity
7
8
8
- static char * adjustSceneName = nil ;
9
- static BOOL launchAdjustDeferredDeeplink = YES ;
10
- static id <AdjustDelegate> adjustUnityInstance = nil ;
11
-
12
9
- (id )init {
13
10
self = [super init ];
14
11
return self;
15
12
}
16
13
17
- - (void )adjustAttributionChanged : (ADJAttribution *)attribution {
18
- NSMutableDictionary *attributionDic = [NSMutableDictionary dictionary ];
19
-
20
- if (nil != attribution.trackerToken ) {
21
- [attributionDic setObject: attribution.trackerToken forKey: @" trackerToken" ];
22
- }
23
-
24
- if (nil != attribution.trackerName ) {
25
- [attributionDic setObject: attribution.trackerName forKey: @" trackerName" ];
26
- }
27
-
28
- if (nil != attribution.network ) {
29
- [attributionDic setObject: attribution.network forKey: @" network" ];
30
- }
31
-
32
- if (nil != attribution.campaign ) {
33
- [attributionDic setObject: attribution.campaign forKey: @" campaign" ];
34
- }
35
-
36
- if (nil != attribution.adgroup ) {
37
- [attributionDic setObject: attribution.adgroup forKey: @" adgroup" ];
38
- }
39
-
40
- if (nil != attribution.creative ) {
41
- [attributionDic setObject: attribution.creative forKey: @" creative" ];
42
- }
43
-
44
- if (nil != attribution.clickLabel ) {
45
- [attributionDic setObject: attribution.clickLabel forKey: @" clickLabel" ];
46
- }
47
-
48
- NSData *dataAttribution = [NSJSONSerialization dataWithJSONObject: attributionDic options: 0 error: nil ];
49
- NSString *stringAttribution = [[NSString alloc ] initWithBytes: [dataAttribution bytes ]
50
- length: [dataAttribution length ]
51
- encoding: NSUTF8StringEncoding];
52
-
53
- const char * charArrayAttribution = [stringAttribution UTF8String ];
54
-
55
- UnitySendMessage (adjustSceneName, " GetNativeAttribution" , charArrayAttribution);
56
- }
57
-
58
- - (void )adjustEventTrackingSucceeded : (ADJEventSuccess *)eventSuccessResponseData {
59
- NSMutableDictionary *eventSuccessDataDict = [NSMutableDictionary dictionary ];
60
-
61
- if (eventSuccessResponseData.message != nil ) {
62
- [eventSuccessDataDict setObject: eventSuccessResponseData.message forKey: @" message" ];
63
- }
64
-
65
- if (eventSuccessResponseData.timeStamp != nil ) {
66
- [eventSuccessDataDict setObject: eventSuccessResponseData.timeStamp forKey: @" timestamp" ];
67
- }
68
-
69
- if (eventSuccessResponseData.adid != nil ) {
70
- [eventSuccessDataDict setObject: eventSuccessResponseData.adid forKey: @" adid" ];
71
- }
72
-
73
- if (eventSuccessResponseData.eventToken != nil ) {
74
- [eventSuccessDataDict setObject: eventSuccessResponseData.eventToken forKey: @" eventToken" ];
75
- }
76
-
77
- if (eventSuccessResponseData.jsonResponse != nil ) {
78
- [eventSuccessDataDict setObject: eventSuccessResponseData.jsonResponse forKey: @" jsonResponse" ];
79
- }
80
-
81
- NSData *dataEventSuccess = [NSJSONSerialization dataWithJSONObject: eventSuccessDataDict options: 0 error: nil ];
82
- NSString *stringEventSuccess = [[NSString alloc ] initWithBytes: [dataEventSuccess bytes ]
83
- length: [dataEventSuccess length ]
84
- encoding: NSUTF8StringEncoding];
85
-
86
- const char * charArrayEventSuccess = [stringEventSuccess UTF8String ];
87
-
88
- UnitySendMessage (adjustSceneName, " GetNativeEventSuccess" , charArrayEventSuccess);
89
- }
90
-
91
- - (void )adjustEventTrackingFailed : (ADJEventFailure *)eventFailureResponseData {
92
- NSMutableDictionary *eventFailureDataDict = [NSMutableDictionary dictionary ];
93
-
94
- if (eventFailureResponseData.message != nil ) {
95
- [eventFailureDataDict setObject: eventFailureResponseData.message forKey: @" message" ];
96
- }
97
-
98
- if (eventFailureResponseData.timeStamp != nil ) {
99
- [eventFailureDataDict setObject: eventFailureResponseData.timeStamp forKey: @" timestamp" ];
100
- }
101
-
102
- if (eventFailureResponseData.adid != nil ) {
103
- [eventFailureDataDict setObject: eventFailureResponseData.adid forKey: @" adid" ];
104
- }
105
-
106
- if (eventFailureResponseData.eventToken != nil ) {
107
- [eventFailureDataDict setObject: eventFailureResponseData.eventToken forKey: @" eventToken" ];
108
- }
109
-
110
- if (eventFailureResponseData.jsonResponse != nil ) {
111
- [eventFailureDataDict setObject: eventFailureResponseData.jsonResponse forKey: @" jsonResponse" ];
112
- }
113
-
114
- [eventFailureDataDict setObject: (eventFailureResponseData.willRetry == YES ? @" true" : @" false" )
115
- forKey: @" willRetry" ];
116
-
117
- NSData *dataEventFailure = [NSJSONSerialization dataWithJSONObject: eventFailureDataDict options: 0 error: nil ];
118
- NSString *stringEventFailure = [[NSString alloc ] initWithBytes: [dataEventFailure bytes ]
119
- length: [dataEventFailure length ]
120
- encoding: NSUTF8StringEncoding];
121
-
122
- const char * charArrayEventFailure = [stringEventFailure UTF8String ];
123
-
124
- UnitySendMessage (adjustSceneName, " GetNativeEventFailure" , charArrayEventFailure);
125
- }
126
-
127
- - (void )adjustSessionTrackingSucceeded : (ADJSessionSuccess *)sessionSuccessResponseData {
128
- NSMutableDictionary *sessionSuccessDataDict = [NSMutableDictionary dictionary ];
129
-
130
- if (sessionSuccessResponseData.message != nil ) {
131
- [sessionSuccessDataDict setObject: sessionSuccessResponseData.message forKey: @" message" ];
132
- }
133
-
134
- if (sessionSuccessResponseData.timeStamp != nil ) {
135
- [sessionSuccessDataDict setObject: sessionSuccessResponseData.timeStamp forKey: @" timestamp" ];
136
- }
137
-
138
- if (sessionSuccessResponseData.adid != nil ) {
139
- [sessionSuccessDataDict setObject: sessionSuccessResponseData.adid forKey: @" adid" ];
140
- }
141
-
142
- if (sessionSuccessResponseData.jsonResponse != nil ) {
143
- [sessionSuccessDataDict setObject: sessionSuccessResponseData.jsonResponse forKey: @" jsonResponse" ];
144
- }
145
-
146
- NSData *dataSessionSuccess = [NSJSONSerialization dataWithJSONObject: sessionSuccessDataDict options: 0 error: nil ];
147
- NSString *stringSessionSuccess = [[NSString alloc ] initWithBytes: [dataSessionSuccess bytes ]
148
- length: [dataSessionSuccess length ]
149
- encoding: NSUTF8StringEncoding];
150
-
151
- const char * charArraySessionSuccess = [stringSessionSuccess UTF8String ];
152
-
153
- UnitySendMessage (adjustSceneName, " GetNativeSessionSuccess" , charArraySessionSuccess);
154
- }
155
-
156
- - (void )adjustSessionTrackingFailed : (ADJSessionFailure *)sessionFailureResponseData {
157
- NSMutableDictionary *sessionFailureDataDict = [NSMutableDictionary dictionary ];
158
-
159
- if (sessionFailureResponseData.message != nil ) {
160
- [sessionFailureDataDict setObject: sessionFailureResponseData.message forKey: @" message" ];
161
- }
162
-
163
- if (sessionFailureResponseData.timeStamp != nil ) {
164
- [sessionFailureDataDict setObject: sessionFailureResponseData.timeStamp forKey: @" timestamp" ];
165
- }
166
-
167
- if (sessionFailureResponseData.adid != nil ) {
168
- [sessionFailureDataDict setObject: sessionFailureResponseData.adid forKey: @" adid" ];
169
- }
170
-
171
- if (sessionFailureResponseData.jsonResponse != nil ) {
172
- [sessionFailureDataDict setObject: sessionFailureResponseData.jsonResponse forKey: @" jsonResponse" ];
173
- }
174
-
175
- [sessionFailureDataDict setObject: (sessionFailureResponseData.willRetry == YES ? @" true" : @" false" )
176
- forKey: @" willRetry" ];
177
-
178
- NSData *dataSessionFailure = [NSJSONSerialization dataWithJSONObject: sessionFailureDataDict options: 0 error: nil ];
179
- NSString *stringSessionFailure = [[NSString alloc ] initWithBytes: [dataSessionFailure bytes ]
180
- length: [dataSessionFailure length ]
181
- encoding: NSUTF8StringEncoding];
182
-
183
- const char * charArraySessionFailure = [stringSessionFailure UTF8String ];
184
-
185
- UnitySendMessage (adjustSceneName, " GetNativeSessionFailure" , charArraySessionFailure);
186
- }
187
-
188
- - (BOOL )adjustDeeplinkResponse : (NSURL *)deeplink {
189
- NSString *stringDeeplink = [deeplink absoluteString ];
190
- const char * charDeeplink = [stringDeeplink UTF8String ];
191
-
192
- UnitySendMessage (adjustSceneName, " GetNativeDeferredDeeplink" , charDeeplink);
193
-
194
- return launchAdjustDeferredDeeplink;
195
- }
196
-
197
14
@end
198
15
199
16
// Method for converting JSON stirng parameters into NSArray object.
200
17
NSArray * ConvertArrayParameters (const char * cStringJsonArrayParameters) {
201
18
if (cStringJsonArrayParameters == NULL ) {
202
19
return nil ;
203
20
}
204
-
21
+
205
22
NSError *error = nil ;
206
23
NSArray *arrayParameters = nil ;
207
24
NSString *stringJsonArrayParameters = [NSString stringWithUTF8String: cStringJsonArrayParameters];
208
-
25
+
209
26
if (stringJsonArrayParameters != nil ) {
210
27
NSData *dataJson = [stringJsonArrayParameters dataUsingEncoding: NSUTF8StringEncoding];
211
28
arrayParameters = [NSJSONSerialization JSONObjectWithData: dataJson options: 0 error: &error];
212
29
}
213
-
30
+
214
31
if (error != nil ) {
215
32
NSString *errorMessage = @" Failed to parse json parameters!" ;
216
33
NSLog (@" %@ " , errorMessage);
217
34
}
218
-
35
+
219
36
return arrayParameters;
220
37
}
221
38
222
39
extern " C"
223
40
{
224
- void _AdjustLaunchApp (const char * appToken, const char * environment, const char * sdkPrefix, int allowSuppressLogLevel, int logLevel, int eventBuffering, int sendInBackground, double delayStart, const char * userAgent, int launchDeferredDeeplink, const char * sceneName) {
41
+ void _AdjustLaunchApp (const char * appToken, const char * environment, const char * sdkPrefix, int allowSuppressLogLevel, int logLevel,
42
+ int eventBuffering, int sendInBackground, double delayStart, const char * userAgent, int launchDeferredDeeplink, const char * sceneName,
43
+ int isAttributionCallbackImplemented, int isEventSuccessCallbackImplemented, int isEventFailureCallbackImplemented,
44
+ int isSessionSuccessCallbackImplemented, int isSessionFailureCallbackImplemented, int isDeferredDeeplinkCallbackImplemented) {
225
45
NSString *stringSdkPrefix = [NSString stringWithUTF8String: sdkPrefix];
226
46
NSString *stringAppToken = [NSString stringWithUTF8String: appToken];
227
47
NSString *stringEnvironment = [NSString stringWithUTF8String: environment];
@@ -241,6 +61,21 @@ void _AdjustLaunchApp(const char* appToken, const char* environment, const char*
241
61
242
62
[adjustConfig setSdkPrefix: stringSdkPrefix];
243
63
64
+ // Attribution delegate & other delegates
65
+ if (isAttributionCallbackImplemented || isEventSuccessCallbackImplemented ||
66
+ isEventFailureCallbackImplemented || isSessionSuccessCallbackImplemented ||
67
+ isSessionFailureCallbackImplemented || isDeferredDeeplinkCallbackImplemented) {
68
+ [adjustConfig setDelegate:
69
+ [AdjustUnityDelegate getInstanceWithSwizzleOfAttributionCallback: isAttributionCallbackImplemented
70
+ eventSucceededCallback: isEventSuccessCallbackImplemented
71
+ eventFailedCallback: isEventFailureCallbackImplemented
72
+ sessionSucceededCallback: isSessionSuccessCallbackImplemented
73
+ sessionFailedCallback: isSessionFailureCallbackImplemented
74
+ deferredDeeplinkCallback: isDeferredDeeplinkCallbackImplemented
75
+ shouldLaunchDeferredDeeplink: launchDeferredDeeplink
76
+ withAdjustUnitySceneName: stringSceneName]];
77
+ }
78
+
244
79
// Optional fields.
245
80
if (logLevel != -1 ) {
246
81
[adjustConfig setLogLevel: (ADJLogLevel)logLevel];
@@ -258,25 +93,13 @@ void _AdjustLaunchApp(const char* appToken, const char* environment, const char*
258
93
[adjustConfig setDelayStart: delayStart];
259
94
}
260
95
261
- if (launchDeferredDeeplink != -1 ) {
262
- launchAdjustDeferredDeeplink = (BOOL )launchDeferredDeeplink;
263
- }
264
-
265
96
if (stringUserAgent != NULL ) {
266
97
if ([stringUserAgent length ] > 0 ) {
267
98
[adjustConfig setUserAgent: stringUserAgent];
268
99
}
269
100
}
270
101
271
- if (sceneName != NULL ) {
272
- if ([stringSceneName length ] > 0 ) {
273
- adjustSceneName = strdup (sceneName);
274
- adjustUnityInstance = [[AdjustUnity alloc ] init ];
275
- [adjustConfig setDelegate: (id )adjustUnityInstance];
276
- }
277
- }
278
-
279
- NSLog (@" %@ , %@ , %@ , %d , %d , %d , %d , %.1f , %@ , %d , %@ " , stringAppToken, stringEnvironment, stringSdkPrefix, allowSuppressLogLevel, logLevel, eventBuffering, sendInBackground, delayStart, stringUserAgent, launchDeferredDeeplink, stringSceneName);
102
+ // NSLog(@"%@, %@, %@, %d, %d, %d, %d, %.1f, %@, %d, %@", stringAppToken, stringEnvironment, stringSdkPrefix, allowSuppressLogLevel, logLevel, eventBuffering, sendInBackground, delayStart, stringUserAgent, launchDeferredDeeplink, stringSceneName);
280
103
281
104
// Launch adjust instance.
282
105
[Adjust appDidLaunch: adjustConfig];
0 commit comments