Skip to content

Commit ed1ffe2

Browse files
committed
EUID support
1 parent 04773b7 commit ed1ffe2

5 files changed

Lines changed: 144 additions & 4 deletions

File tree

Development/UID2GoogleGMADevelopmentApp/UID2GoogleGMADevelopmentApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ let package = Package(
1515
targets: ["UID2GMAPlugin"])
1616
],
1717
dependencies: [
18-
.package(url: "https://github.com/IABTechLab/uid2-ios-sdk.git", "0.2.0" ..< "2.0.0"),
18+
.package(url: "https://github.com/IABTechLab/uid2-ios-sdk.git", .branchItem("dave/euid")),
1919
.package(url: "https://github.com/googleads/swift-package-manager-google-mobile-ads.git", "10.7.0" ..< "12.0.0")
2020
],
2121
targets: [
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
//
2+
// EUIDGMAMediationAdapter.swift
3+
//
4+
5+
import Foundation
6+
import GoogleMobileAds
7+
import UID2
8+
9+
/// Adapter to connect EUID to Google Mobile Ads
10+
/// https://developers.google.com/admob/ios/open-bidding-adapter
11+
@objc(EUIDGMAMediationAdapter)
12+
class EUIDGMAMediationAdapter: NSObject {
13+
14+
required override init() { }
15+
16+
}
17+
18+
extension EUIDGMAMediationAdapter: GADRTBAdapter {
19+
20+
static func setUpWith(_ configuration: GADMediationServerConfiguration, completionHandler: @escaping GADMediationAdapterSetUpCompletionBlock) {
21+
22+
// Ensure UID2Manager has started
23+
_ = EUIDManager.shared
24+
25+
completionHandler(nil)
26+
}
27+
28+
func collectSignals(for params: GADRTBRequestParameters, completionHandler: @escaping GADRTBSignalCompletionHandler) {
29+
Task {
30+
guard let advertisingToken = await EUIDManager.shared.getAdvertisingToken() else {
31+
completionHandler(nil, AdvertisingTokenNotFoundError())
32+
return
33+
}
34+
completionHandler(advertisingToken, nil)
35+
}
36+
}
37+
38+
static func adapterVersion() -> GADVersionNumber {
39+
var version = GADVersionNumber()
40+
version.majorVersion = 0
41+
version.minorVersion = 3
42+
version.patchVersion = 3
43+
return version
44+
}
45+
46+
static func adSDKVersion() -> GADVersionNumber {
47+
let uid2Version = UID2SDKProperties.getUID2SDKVersion()
48+
var version = GADVersionNumber()
49+
version.majorVersion = uid2Version.major
50+
version.minorVersion = uid2Version.minor
51+
version.patchVersion = uid2Version.patch
52+
return version
53+
}
54+
55+
static func networkExtrasClass() -> GADAdNetworkExtras.Type? {
56+
return nil
57+
}
58+
59+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
//
2+
// EUIDGMAMediationAdapterTests.swift
3+
//
4+
5+
import XCTest
6+
import GoogleMobileAds
7+
import UID2
8+
@testable import UID2GMAPlugin
9+
10+
final class EUIDGMAMediationAdapterTests: XCTestCase {
11+
12+
/// 🟩 - GMA Adapter Request Signal Success
13+
func testRequestSignalsSuccess() async throws {
14+
// Seed the sample UID2Identity data in the UID2Manager
15+
await EUIDManager.shared.setAutomaticRefreshEnabled(false)
16+
await EUIDManager.shared.setIdentity(
17+
UID2Identity(
18+
advertisingToken: "euid-test-token",
19+
refreshToken: "refresh-token",
20+
identityExpires: Date(timeIntervalSinceNow: 60 * 60).millisecondsSince1970,
21+
refreshFrom: Date(timeIntervalSinceNow: 60 * 40).millisecondsSince1970,
22+
refreshExpires: Date(timeIntervalSinceNow: 60 * 50).millisecondsSince1970,
23+
refreshResponseKey: ""
24+
)
25+
)
26+
27+
let signal = try await EUIDGMAMediationAdapter().collectSignals(for: GADRTBRequestParameters())
28+
29+
// Confirm that Adapter returns expected data
30+
XCTAssertEqual("euid-test-token", signal)
31+
}
32+
33+
/// 🟥 - GMA Adapter Request Signal Error No Identity
34+
func testRequestSignalsNoIdentity() async throws {
35+
// Ensure no identity is set
36+
await EUIDManager.shared.resetIdentity()
37+
38+
let result = await Task<String?, Error> {
39+
try await EUIDGMAMediationAdapter().collectSignals(for: GADRTBRequestParameters())
40+
}.result
41+
XCTAssertThrowsError(try result.get()) { error in
42+
let adapterError = error as? AdvertisingTokenNotFoundError
43+
XCTAssertEqual(AdvertisingTokenNotFoundError(), adapterError)
44+
}
45+
}
46+
47+
/// 🟥 - GMA Adapter Request Signal No Advertising Token Erro
48+
func testRequestSignalsNoAdvertisingToken() async throws {
49+
// Set an identity with an invalid advertisingToken
50+
await EUIDManager.shared.setAutomaticRefreshEnabled(false)
51+
await EUIDManager.shared.setIdentity(
52+
UID2Identity(
53+
advertisingToken: "",
54+
refreshToken: "refresh-token",
55+
identityExpires: Date(timeIntervalSinceNow: 60 * 60).millisecondsSince1970,
56+
refreshFrom: Date(timeIntervalSinceNow: 60 * 40).millisecondsSince1970,
57+
refreshExpires: Date(timeIntervalSinceNow: 60 * 50).millisecondsSince1970,
58+
refreshResponseKey: ""
59+
)
60+
)
61+
62+
let result = await Task<String?, Error> {
63+
try await EUIDGMAMediationAdapter().collectSignals(for: GADRTBRequestParameters())
64+
}.result
65+
XCTAssertThrowsError(try result.get()) { error in
66+
let adapterError = error as? AdvertisingTokenNotFoundError
67+
XCTAssertEqual(AdvertisingTokenNotFoundError(), adapterError)
68+
}
69+
}
70+
71+
/// 🟩 - GMA Adapter Ad SDK Version Check Success
72+
func testAdSDKVersion() async throws {
73+
74+
let adSDKVersion = EUIDGMAMediationAdapter.adSDKVersion()
75+
let sdkVersion = await EUIDManager.shared.sdkVersion
76+
77+
XCTAssertEqual(sdkVersion.major, adSDKVersion.majorVersion)
78+
XCTAssertEqual(sdkVersion.minor, adSDKVersion.minorVersion)
79+
XCTAssertEqual(sdkVersion.patch, adSDKVersion.patchVersion)
80+
}
81+
}

UID2GMAPlugin.podspec.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
},
1010
"source": {
1111
"git": "https://github.com/IABTechLab/uid2-ios-plugin-google-gma.git",
12-
"tag": "v0.3.3"
12+
"branch": "dave/euid"
1313
},
1414
"platforms": {
1515
"ios": "13.0"

0 commit comments

Comments
 (0)