@thealteroffice/react-native-adgeist 0.0.36-beta → 0.0.37-beta

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.
Files changed (35) hide show
  1. package/Adgeist.podspec +7 -4
  2. package/ios/AdgeistImpl.swift +11 -130
  3. package/ios/Frameworks/AdgeistKit.xcframework/Info.plist +44 -0
  4. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/AdgeistKit +0 -0
  5. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/Headers/AdgeistKit.h +11 -0
  6. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/Info.plist +0 -0
  7. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios.abi.json +2429 -0
  8. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios.private.swiftinterface +66 -0
  9. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  10. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios.swiftinterface +66 -0
  11. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/Modules/module.modulemap +6 -0
  12. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/PrivacyInfo.xcprivacy +46 -0
  13. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/ad_view.html +57 -0
  14. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64/AdgeistKit.framework/adcard-beta.js +556 -0
  15. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/AdgeistKit +0 -0
  16. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Headers/AdgeistKit.h +11 -0
  17. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Info.plist +0 -0
  18. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios-simulator.abi.json +2429 -0
  19. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +66 -0
  20. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  21. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +66 -0
  22. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/x86_64-apple-ios-simulator.abi.json +2429 -0
  23. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +66 -0
  24. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  25. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/AdgeistKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +66 -0
  26. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/Modules/module.modulemap +6 -0
  27. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/PrivacyInfo.xcprivacy +46 -0
  28. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/ad_view.html +57 -0
  29. package/ios/Frameworks/AdgeistKit.xcframework/ios-arm64_x86_64-simulator/AdgeistKit.framework/adcard-beta.js +556 -0
  30. package/ios/NativeHTML5AdManager.mm +34 -9
  31. package/ios/NativeHTML5AdView.swift +48 -107
  32. package/lib/module/constants.js +1 -1
  33. package/lib/typescript/src/constants.d.ts +1 -1
  34. package/package.json +9 -2
  35. package/src/constants.ts +1 -1
@@ -9,32 +9,34 @@ import React
9
9
  @objc func onAdOpened(_ view: NativeHTML5AdView)
10
10
  @objc func onAdClosed(_ view: NativeHTML5AdView)
11
11
  @objc func onAdClicked(_ view: NativeHTML5AdView)
12
+ @objc(onAdWarning:warning:) func onAdWarning(_ view: NativeHTML5AdView, warning: String)
13
+ @objc(onAdSizeChanged:width:height:) func onAdSizeChanged(_ view: NativeHTML5AdView, width: Double, height: Double)
12
14
  }
13
15
 
14
16
  // MARK: - Main Swift View (Exposed to Objective-C++)
15
17
  @objc(NativeHTML5AdView)
16
18
  @objcMembers
17
19
  public class NativeHTML5AdView: UIView {
18
-
20
+
19
21
  // MARK: Public Props (accessible from .mm)
20
22
  @objc public var adUnitID: String?
21
23
  @objc public var adSize: NSDictionary?
22
- @objc public var adType: String?
23
24
  @objc public var adIsResponsive: Bool = false
24
-
25
+ @objc public var reserveSpace: Bool = true
26
+
25
27
  // MARK: Events (Old Architecture)
26
28
  @objc public var onAdLoaded: ((_ body: [String: Any]) -> Void)?
27
29
  @objc public var onAdFailedToLoad: ((_ body: [String: Any]) -> Void)?
28
30
  @objc public var onAdOpened: ((_ body: [String: Any]) -> Void)?
29
31
  @objc public var onAdClosed: ((_ body: [String: Any]) -> Void)?
30
32
  @objc public var onAdClicked: ((_ body: [String: Any]) -> Void)?
33
+ @objc public var onAdWarning: ((_ body: [String: Any]) -> Void)?
34
+ @objc public var onAdSizeChanged: ((_ body: [String: Any]) -> Void)?
31
35
 
32
36
  // MARK: Delegate (used to send events back to manager)
33
37
  @objc public weak var delegate: NativeHTML5AdDelegate?
34
38
 
35
- // MARK: Private Ad View & Listener
36
39
  private var adView: AdView?
37
- private var adListener: NativeHTML5AdListener?
38
40
 
39
41
  public override init(frame: CGRect) {
40
42
  super.init(frame: frame)
@@ -48,12 +50,11 @@ public class NativeHTML5AdView: UIView {
48
50
 
49
51
  public override func layoutSubviews() {
50
52
  super.layoutSubviews()
53
+ adView?.frame = bounds
51
54
  }
52
55
 
53
- @objc public func triggerViewWillAppear() {
54
- // adView?.resume()
55
- }
56
-
56
+ @objc public func triggerViewWillAppear() {}
57
+
57
58
  @objc public func reloadAd() {
58
59
  cleanupAdView()
59
60
  embedAdView()
@@ -67,126 +68,66 @@ public class NativeHTML5AdView: UIView {
67
68
  @objc public func destroy() {
68
69
  cleanupAdView()
69
70
  }
70
-
71
+
71
72
  private func cleanupAdView() {
72
- adView?.destroy()
73
+ adView?.onEvent = nil
73
74
  adView?.removeFromSuperview()
74
75
  adView = nil
75
- adListener = nil
76
76
  }
77
77
 
78
78
  private func embedAdView() {
79
- guard let adUnitID = adUnitID else {
80
- delegate?.onAdFailedToLoad(self, error: "Ad unit ID is required")
79
+ guard let adUnitID = adUnitID, !adUnitID.isEmpty else {
80
+ emitFailedToLoad("Ad unit ID is required")
81
81
  return
82
82
  }
83
83
 
84
- let adView = AdView()
85
- adView.frame = bounds
86
- adView.adUnitId = adUnitID
87
- adView.adIsResponsive = adIsResponsive
84
+ let dict = adSize as? [String: Any]
85
+ let width = adIsResponsive ? nil : dimension(dict?["width"])
86
+ let height = dimension(dict?["height"])
88
87
 
89
- if let dict = adSize as? [String: Any] {
90
- if let w = dict["width"] as? Int, let h = dict["height"] as? Int {
91
- adView.setAdDimension(AdSize(width: w, height: h))
88
+ let adView = AdView(adUnitId: adUnitID, width: width, height: height, reserveSpace: reserveSpace)
89
+ adView.frame = bounds
90
+ adView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
91
+ adView.onEvent = { [weak self, weak adView] event in
92
+ DispatchQueue.main.async {
93
+ guard let self = self, let adView = adView, adView === self.adView else { return }
94
+ self.handle(event, from: adView)
92
95
  }
93
96
  }
94
97
 
95
- // Handle adType with default value of BANNER
96
- let adTypeStr = (adType ?? "BANNER").uppercased()
97
-
98
- switch adTypeStr {
99
- case "BANNER":
100
- adView.adType = .BANNER
101
- case "DISPLAY":
102
- adView.adType = .DISPLAY
103
- case "COMPANION":
104
- adView.adType = .COMPANION
105
- default:
106
- delegate?.onAdFailedToLoad(self, error: "Invalid ad type: \(adTypeStr)")
107
- return
108
- }
109
-
110
- let listener = NativeHTML5AdListener(view: self)
111
- self.adListener = listener
112
- adView.setAdListener(listener)
113
-
114
98
  self.adView = adView
115
99
  addSubview(adView)
116
-
117
- let request = AdRequest.AdRequestBuilder().build()
118
- adView.loadAd(request)
119
- }
120
- }
121
-
122
- // MARK: - Ad Listener (Bridge to delegate)
123
- private class NativeHTML5AdListener: AdListener {
124
- private weak var view: NativeHTML5AdView?
125
-
126
- init(view: NativeHTML5AdView) {
127
- self.view = view
128
- super.init()
129
- }
130
-
131
- override func onAdLoaded() {
132
- if let view = view {
133
- // Old Architecture
134
- if let onAdLoaded = view.onAdLoaded {
135
- onAdLoaded([:])
136
- }
137
- // New Architecture (or if delegate is used)
138
- view.delegate?.onAdLoaded(view)
139
- }
140
- }
141
-
142
- override func onAdFailedToLoad(_ errorMessage: String) {
143
- if let view = view {
144
- // Old Architecture
145
- if let onAdFailedToLoad = view.onAdFailedToLoad {
146
- let errorDict = ["error": errorMessage]
147
- if Thread.isMainThread {
148
- onAdFailedToLoad(errorDict)
149
- } else {
150
- DispatchQueue.main.async {
151
- onAdFailedToLoad(errorDict)
152
- }
153
- }
154
- }
155
- // New Architecture (or if delegate is used)
156
- view.delegate?.onAdFailedToLoad(view, error: errorMessage)
157
- }
100
+ adView.load()
158
101
  }
159
102
 
160
- override func onAdClicked() {
161
- if let view = view {
162
- // Old Architecture
163
- if let onAdClicked = view.onAdClicked {
164
- onAdClicked([:])
103
+ private func handle(_ event: AdgeistEvent, from adView: AdView) {
104
+ switch event.type {
105
+ case .adLoaded:
106
+ onAdLoaded?([:])
107
+ delegate?.onAdLoaded(self)
108
+ let size = adView.intrinsicContentSize
109
+ if size.width > 0 && size.height > 0 {
110
+ onAdSizeChanged?(["width": Double(size.width), "height": Double(size.height)])
111
+ delegate?.onAdSizeChanged(self, width: Double(size.width), height: Double(size.height))
165
112
  }
166
- // New Architecture (or if delegate is used)
167
- view.delegate?.onAdClicked(view)
113
+ case .adClicked:
114
+ onAdClicked?([:])
115
+ delegate?.onAdClicked(self)
116
+ case .adNoFill, .adNetworkError:
117
+ emitFailedToLoad(event.message)
118
+ case .adWarning:
119
+ onAdWarning?(["warning": event.message])
120
+ delegate?.onAdWarning(self, warning: event.message)
168
121
  }
169
122
  }
170
123
 
171
- override func onAdImpression() {
172
- if let view = view {
173
- // Old Architecture (mapped to onAdOpened)
174
- if let onAdOpened = view.onAdOpened {
175
- onAdOpened([:])
176
- }
177
- // New Architecture (or if delegate is used)
178
- view.delegate?.onAdOpened(view)
179
- }
124
+ private func emitFailedToLoad(_ message: String) {
125
+ onAdFailedToLoad?(["error": message])
126
+ delegate?.onAdFailedToLoad(self, error: message)
180
127
  }
181
128
 
182
- override func onAdClosed() {
183
- if let view = view {
184
- // Old Architecture
185
- if let onAdClosed = view.onAdClosed {
186
- onAdClosed([:])
187
- }
188
- // New Architecture (or if delegate is used)
189
- view.delegate?.onAdClosed(view)
190
- }
129
+ private func dimension(_ value: Any?) -> CGFloat? {
130
+ guard let number = value as? NSNumber, number.doubleValue > 0 else { return nil }
131
+ return CGFloat(number.doubleValue)
191
132
  }
192
133
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  export const PACKAGE_VERSION_TAG = 'RN';
4
- export const PACKAGE_VERSION = '0.0.36';
4
+ export const PACKAGE_VERSION = '0.0.37';
5
5
  export const HTML_5_AD_NATIVE_COMPONENT_NAME = 'HTML5AdNativeComponent';
6
6
  //# sourceMappingURL=constants.js.map
@@ -1,4 +1,4 @@
1
1
  export declare const PACKAGE_VERSION_TAG = "RN";
2
- export declare const PACKAGE_VERSION = "0.0.36";
2
+ export declare const PACKAGE_VERSION = "0.0.37";
3
3
  export declare const HTML_5_AD_NATIVE_COMPONENT_NAME = "HTML5AdNativeComponent";
4
4
  //# sourceMappingURL=constants.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thealteroffice/react-native-adgeist",
3
- "version": "0.0.36-beta",
3
+ "version": "0.0.37-beta",
4
4
  "description": "Publishers can integrate our SDK to connect their ad spaces to the AdGeist marketplace.",
5
5
  "main": "./lib/module/index.js",
6
6
  "module": "./lib/module/index.js",
@@ -39,9 +39,16 @@
39
39
  "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
40
40
  "set-env": "node scripts/set-env.js",
41
41
  "sync-version": "node scripts/sync-version.js",
42
- "prepare": "yarn sync-version && bob build",
42
+ "fetch-adgeistkit": "node scripts/fetch-ios-native-adgeistkit.js",
43
+ "update-adgeistkit": "node scripts/update-adgeistkit.js",
44
+ "prepare": "yarn sync-version && yarn fetch-adgeistkit && bob build",
43
45
  "release": "release-it"
44
46
  },
47
+ "adgeistKit": {
48
+ "version": "1.0.24-beta.2",
49
+ "url": "https://github.com/the-alter-office/adgeist-publisher-ios-sdk/releases/download/1.0.24-beta.2/AdgeistKit.xcframework.zip",
50
+ "checksum": "ff1850115ce44df9a80a27d14422d2e5c97727d7cf576272739ad00cb20bea15"
51
+ },
45
52
  "keywords": [
46
53
  "react-native",
47
54
  "ios",
package/src/constants.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export const PACKAGE_VERSION_TAG = 'RN';
2
- export const PACKAGE_VERSION = '0.0.36';
2
+ export const PACKAGE_VERSION = '0.0.37';
3
3
 
4
4
  export const HTML_5_AD_NATIVE_COMPONENT_NAME = 'HTML5AdNativeComponent';