Skip to content

Commit 8a2e70d

Browse files
runnerrunner
runner
authored and
runner
committed
Release 4.4.0
1 parent 977456e commit 8a2e70d

File tree

153 files changed

+4068
-1523
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

153 files changed

+4068
-1523
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

Example/UnityAdsExample/ViewController.m

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,16 @@ - (void)viewDidLoad {
3838
self.gameIdTextField.text = kDefaultGameId;
3939
}
4040

41-
self.interstitialPlacementId = @"video";
41+
self.interstitialPlacementId = [defaults valueForKey:@"interstitialPlacementId"] ?: @"video";
4242
self.rewardedPlacementId = @"rewardedVideo";
4343
self.bannerId = @"bannerads";
4444
self.testMode = YES;
45+
46+
self.initializeButton.accessibilityIdentifier = @"InitializeButton";
47+
self.gameIdTextField.accessibilityIdentifier = @"GameIDField";
48+
self.interstitialLoadButton.accessibilityIdentifier = @"interstitialLoadButton";
49+
self.interstitialShowButton.accessibilityIdentifier = @"interstitialShowButton";
50+
4551
} /* viewDidLoad */
4652

4753
- (IBAction)doneEditingGameId: (id)sender {
@@ -157,6 +163,18 @@ - (void)unityAdsAdLoaded: (NSString *)placementId {
157163

158164
- (void)unityAdsAdFailedToLoad: (NSString *)placementId withError: (UnityAdsLoadError)error withMessage: (NSString *)message {
159165
NSLog(@"UnityAds adFailedToLoad: %ld - %@", (long)error, message);
166+
167+
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert"
168+
message:message
169+
preferredStyle:UIAlertControllerStyleAlert];
170+
171+
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
172+
handler:^(UIAlertAction * action) {}];
173+
174+
[alert addAction:defaultAction];
175+
[self presentViewController:alert animated:YES completion:nil];
176+
177+
160178
}
161179

162180
#pragma mark UnityAdsShowDelegate

SourceCode/Private/Ads/Api/UADSApiGMAScar/UADSApiGMAScar.m

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ + (UADSGMAScar *)facade {
2525

2626
+ (void)WebViewExposed_getVersion: (USRVWebViewCallback *)callback {
2727
[self sendAvailabilityMetrics];
28-
28+
2929
[callback invoke: self.facade.sdkVersion, nil];
3030
}
3131

@@ -125,13 +125,13 @@ + (void)sendEvent: (id<UADSWebViewEvent>)event {
125125

126126
+ (void)sendAvailabilityMetrics {
127127
if (self.facade.isGADExists) {
128-
[self sendEvent:[GMAWebViewEvent newScarPresent]];
129-
128+
[self sendEvent: [GMAWebViewEvent newScarPresent]];
129+
130130
if (!self.facade.isGADSupported) {
131-
[self sendEvent:[GMAWebViewEvent newScarUnsupported]];
131+
[self sendEvent: [GMAWebViewEvent newScarUnsupported]];
132132
}
133133
} else {
134-
[self sendEvent:[GMAWebViewEvent newScarNotPresent]];
134+
[self sendEvent: [GMAWebViewEvent newScarNotPresent]];
135135
}
136136
}
137137

SourceCode/Private/Ads/Api/UADSApiToken.m

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,10 @@ + (void)WebViewExposed_setPeekMode: (NSNumber *)value callback: (USRVWebViewCall
3030
}
3131

3232
+ (void)WebViewExposed_getNativeGeneratedToken: (USRVWebViewCallback *)callback {
33-
34-
[self.serviceProvider.nativeTokenGenerator getToken:^(UADSHeaderBiddingToken * _Nullable token) {
35-
UADSWebViewEventBase *event = [UADSWebViewEventBase newWithCategory: kTokenCategoryName
36-
withEvent: kTokenEventName
37-
withParams: @[token.value]];
33+
[self.serviceProvider.nativeTokenGenerator getToken:^(UADSHeaderBiddingToken *_Nullable token) {
34+
UADSWebViewEventBase *event = [UADSWebViewEventBase newWithCategory: kTokenCategoryName
35+
withEvent: kTokenEventName
36+
withParams: @[token.value]];
3837
[self.webViewEventSender sendEvent: event];
3938
}];
4039
[callback invoke: nil];

SourceCode/Private/Core/Api/USRVApiCache.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#import "NSString+Hash.h"
88
#import <AVFoundation/AVFoundation.h>
99
#import "USRVApiRequest.h"
10+
#import "NSDictionary+Headers.h"
1011

1112
NSString * USRVNSStringFromCacheError(UnityServicesCacheError error) {
1213
switch (error) {
@@ -55,7 +56,7 @@ + (void)WebViewExposed_download: (NSString *)url fileId: (NSString *)fileId head
5556

5657
BOOL success = [USRVCacheQueue download: url
5758
target: [USRVApiCache fileIdToFilename: fileId]
58-
headers: [USRVApiRequest getHeadersMap: headers]
59+
headers: [NSDictionary uads_getHeadersMap: headers]
5960
append: [append boolValue]];
6061

6162
if (!success) {

SourceCode/Private/Core/Api/USRVApiRequest.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,4 @@
22

33
@interface USRVApiRequest : NSObject
44

5-
+ (NSArray<NSArray<NSString *> *> *)getHeadersArray: (NSDictionary<NSString *, NSString *> *)headersMap;
6-
+ (NSDictionary<NSString *, NSArray *> *)getHeadersMap: (NSArray *)headers;
7-
85
@end

SourceCode/Private/Core/Api/USRVApiRequest.m

Lines changed: 50 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,25 @@
44
#import "USRVWebViewApp.h"
55
#import "USRVWebRequestError.h"
66
#import "USRVWebRequestEvent.h"
7+
#import "UADSServiceProviderProxy.h"
8+
#import "NSMutableDictionary+SafeOperations.h"
9+
#import "UADSServiceProviderProxy.h"
10+
#import "UADSBaseOptions.h"
11+
#import "UADSCommonNetworkErrorProxy.h"
12+
#import "UADSCorePresenceChecker.h"
13+
#import "NSDictionary+Headers.h"
714

815
@implementation USRVApiRequest
9-
1016
static NSString *webRequestEventCategory = @"REQUEST";
1117

18+
+ (USRVWebViewApp *)eventSender {
19+
return [USRVWebViewApp getCurrentApp];
20+
}
21+
22+
+ (void)WebViewExposed_supportsURLSession: (USRVWebViewCallback *)callback {
23+
[callback invoke: [NSNumber numberWithBool: UADSCorePresenceChecker.isPresent], nil];
24+
}
25+
1226
+ (void)WebViewExposed_get: (NSString *)requestId url: (NSString *)url headers: (NSArray *)headers connectTimeout: (NSNumber *)connectTimeout callback: (USRVWebViewCallback *)callback {
1327
if (headers && headers.count == 0) {
1428
headers = NULL;
@@ -28,7 +42,7 @@ + (void)WebViewExposed_get: (NSString *)requestId url: (NSString *)url headers:
2842
}
2943
};
3044

31-
NSDictionary *mappedHeaders = [USRVApiRequest getHeadersMap: headers];
45+
NSDictionary *mappedHeaders = [NSDictionary uads_getHeadersMap: headers];
3246

3347
if (!mappedHeaders) {
3448
[callback error: USRVNSStringFromWebRequestError(kUnityServicesWebRequestErrorMappingHeadersFailed)
@@ -63,7 +77,7 @@ + (void)WebViewExposed_head: (NSString *)requestId url: (NSString *)url headers:
6377
}
6478
};
6579

66-
NSDictionary *mappedHeaders = [USRVApiRequest getHeadersMap: headers];
80+
NSDictionary *mappedHeaders = [NSDictionary uads_getHeadersMap: headers];
6781

6882
if (!mappedHeaders) {
6983
[callback error: USRVNSStringFromWebRequestError(kUnityServicesWebRequestErrorMappingHeadersFailed)
@@ -98,7 +112,7 @@ + (void)WebViewExposed_post: (NSString *)requestId url: (NSString *)url body: (N
98112
}
99113
};
100114

101-
NSDictionary *mappedHeaders = [USRVApiRequest getHeadersMap: headers];
115+
NSDictionary *mappedHeaders = [NSDictionary uads_getHeadersMap: headers];
102116

103117
if (!mappedHeaders) {
104118
[callback error: USRVNSStringFromWebRequestError(kUnityServicesWebRequestErrorMappingHeadersFailed)
@@ -120,54 +134,8 @@ + (void)WebViewExposed_setConcurrentRequestCount: (NSNumber *)count callback: (U
120134
[callback invoke: nil];
121135
}
122136

123-
+ (NSDictionary<NSString *, NSArray *> *)getHeadersMap: (NSArray *)headers {
124-
NSMutableDictionary *mappedHeaders = [[NSMutableDictionary alloc] init];
125-
126-
if (headers && headers.count > 0) {
127-
for (int idx = 0; idx < headers.count; idx++) {
128-
if (![[headers objectAtIndex: idx] isKindOfClass: [NSArray class]]) return NULL;
129-
130-
NSArray *header = [headers objectAtIndex: idx];
131-
132-
if ([header count] != 2) return NULL;
133-
134-
if (![[header objectAtIndex: 0] isKindOfClass: [NSString class]] || ![[header objectAtIndex: 1] isKindOfClass: [NSString class]]) {
135-
return NULL;
136-
}
137-
138-
NSString *headerKey = [header objectAtIndex: 0];
139-
NSString *headerValue = [header objectAtIndex: 1];
140-
141-
if (headerKey.length < 1) return NULL;
142-
143-
NSMutableArray *valueList = [[NSMutableArray alloc] initWithArray: [mappedHeaders objectForKey: headerKey]];
144-
[valueList addObject: headerValue];
145-
[mappedHeaders setObject: valueList
146-
forKey: headerKey];
147-
}
148-
}
149-
150-
return mappedHeaders;
151-
} /* getHeadersMap */
152-
153-
+ (NSArray<NSArray<NSString *> *> *)getHeadersArray: (NSDictionary<NSString *, NSString *> *)headersMap {
154-
__block NSArray *headersArray = [NSArray array];
155-
156-
if (headersMap && headersMap.count > 0) {
157-
@try {
158-
[headersMap enumerateKeysAndObjectsUsingBlock: ^(NSString *_Nonnull key, NSString *_Nonnull obj, BOOL *_Nonnull stop) {
159-
headersArray = [headersArray arrayByAddingObject: @[key, obj]];
160-
}];
161-
} @catch (id exception) {
162-
return NULL;
163-
}
164-
}
165-
166-
return headersArray;
167-
}
168-
169137
+ (void)sendSuccess: (NSString *)requestId url: (NSString *)url response: (NSString *)response responseCode: (long)responseCode headers: (NSDictionary<NSString *, NSString *> *)headers {
170-
NSArray<NSArray<NSString *> *> *responseHeaders = [USRVApiRequest getHeadersArray: headers];
138+
NSArray<NSArray<NSString *> *> *responseHeaders = [NSDictionary uads_getHeadersArray: headers];
171139

172140
if (!responseHeaders) {
173141
NSError *error = [NSError errorWithDomain: @"com.unity3d.ads.UnityServices.Error"
@@ -211,4 +179,35 @@ + (void)sendFailed: (NSString *)requestId url: (NSString *)url error: (NSError *
211179
nil];
212180
} /* sendFailed */
213181

182+
+ (void)sendResponseToWebView: (NSDictionary *)dictionary
183+
category: (UnityServicesWebRequestEvent)event {
184+
[self.eventSender sendEvent: USRVNSStringFromWebRequestEvent(event)
185+
category: webRequestEventCategory
186+
param1: dictionary, nil];
187+
}
188+
189+
+ (void)WebViewExposed_sendRequest: (NSDictionary *)requestDictionary
190+
callback: (USRVWebViewCallback *)callback {
191+
id errorCompletion = ^(NSDictionary *_Nonnull error) {
192+
[self sendResponseToWebView: error
193+
category: kUnityServicesWebRequestEventFailed];
194+
};
195+
196+
id successCompletion = ^(NSDictionary *_Nonnull response) {
197+
[self sendResponseToWebView: response
198+
category: kUnityServicesWebRequestEventComplete];
199+
};
200+
201+
202+
[self.network sendRequestUsing: requestDictionary
203+
successCompletion: successCompletion
204+
andErrorCompletion: errorCompletion];
205+
206+
[callback invoke: requestDictionary[@"id"] ? : @"", nil];
207+
}
208+
209+
+ (UADSCommonNetworkProxy *)network {
210+
return [UADSServiceProviderProxy shared].mainNetworkLayer;
211+
}
212+
214213
@end

SourceCode/Private/Core/Cache/USRVCacheOperation.m

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#import "USRVApiRequest.h"
77
#import "USRVApiCache.h"
88
#import "USRVWebRequestFactory.h"
9+
#import "NSDictionary+Headers.h"
910

1011
@implementation USRVCacheOperation
1112

@@ -74,10 +75,10 @@ - (void)main {
7475

7576
long long startTime = [[NSDate date] timeIntervalSince1970] * 1000;
7677

77-
self.request = [USRVWebRequestFactory create: self.source
78-
requestType: @"GET"
79-
headers: NULL
80-
connectTimeout: self.connectTimeout];
78+
self.request = [[USRVWebRequestFactory new] create: self.source
79+
requestType: @"GET"
80+
headers: NULL
81+
connectTimeout: self.connectTimeout];
8182

8283
if (self.append) {
8384
@try {
@@ -151,7 +152,7 @@ - (void)main {
151152
[NSNumber numberWithLongLong: fileSize],
152153
[NSNumber numberWithLongLong: weakSelf.expectedContentSize],
153154
[NSNumber numberWithLong: responseCode],
154-
[USRVApiRequest getHeadersArray: responseHeaders],
155+
[NSDictionary uads_getHeadersArray: responseHeaders],
155156
nil];
156157
});
157158
}];
@@ -239,7 +240,7 @@ - (void)main {
239240
[NSNumber numberWithLongLong: self.expectedContentSize],
240241
[NSNumber numberWithLongLong: duration],
241242
[NSNumber numberWithLong: responseCode],
242-
[USRVApiRequest getHeadersArray: responseHeaders],
243+
[NSDictionary uads_getHeadersArray: responseHeaders],
243244
nil];
244245
});
245246
} else {
@@ -251,7 +252,7 @@ - (void)main {
251252
[NSNumber numberWithLongLong: self.expectedContentSize],
252253
[NSNumber numberWithLongLong: duration],
253254
[NSNumber numberWithLong: responseCode],
254-
[USRVApiRequest getHeadersArray: responseHeaders],
255+
[NSDictionary uads_getHeadersArray: responseHeaders],
255256
nil];
256257
});
257258
}

SourceCode/Private/Core/Categories/NSDictionary/NSDictionary+Filter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ NS_ASSUME_NONNULL_BEGIN
66

77
- (NSDictionary *)uads_filter: (BOOL(NS_NOESCAPE ^)(KeyType key, ObjectType obj))block;
88
- (NSDictionary *)uads_mapKeys: (KeyType(NS_NOESCAPE ^)(KeyType key))block;
9+
- (NSDictionary *)uads_mapValues: (ObjectType(NS_NOESCAPE ^)(KeyType key, ObjectType obj))block;
910
@end
1011

1112
NS_ASSUME_NONNULL_END

SourceCode/Private/Core/Categories/NSDictionary/NSDictionary+Filter.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,14 @@ - (NSDictionary *)uads_mapKeys: (id(NS_NOESCAPE ^)(id key))block {
2323
return newDictionary;
2424
}
2525

26+
- (NSDictionary *)uads_mapValues: (id(NS_NOESCAPE ^)(id key, id obj))block {
27+
NSMutableDictionary *newDictionary = [NSMutableDictionary new];
28+
29+
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL *_Nonnull stop) {
30+
newDictionary[key] = block(key, obj);
31+
}];
32+
33+
return newDictionary;
34+
}
35+
2636
@end
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#import <Foundation/Foundation.h>
2+
3+
NS_ASSUME_NONNULL_BEGIN
4+
5+
@interface NSDictionary (Headers)
6+
+ (NSDictionary<NSString *, NSArray *> *)uads_getHeadersMap: (NSArray *)headers;
7+
+ (NSArray<NSArray<NSString *> *> *)uads_getHeadersArray: (NSDictionary<NSString *, NSString *> *)headersMap;
8+
+ (NSDictionary<NSString *, NSString *> *)uads_getRequestHeaders: (NSDictionary<NSString *, NSArray *> *)headers;
9+
@end
10+
11+
NS_ASSUME_NONNULL_END

0 commit comments

Comments
 (0)