@bigcrunch/react-native-ads 0.11.0 → 0.14.0

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 (33) hide show
  1. package/android/bigcrunch-ads/com/bigcrunch/ads/BigCrunchAds.kt +21 -4
  2. package/android/bigcrunch-ads/com/bigcrunch/ads/adapters/GoogleAdsAdapter.kt +8 -1
  3. package/android/bigcrunch-ads/com/bigcrunch/ads/core/AdOrchestrator.kt +37 -12
  4. package/android/bigcrunch-ads/com/bigcrunch/ads/core/AnalyticsClient.kt +213 -46
  5. package/android/bigcrunch-ads/com/bigcrunch/ads/core/BidRequestClient.kt +52 -17
  6. package/android/bigcrunch-ads/com/bigcrunch/ads/core/DeviceContext.kt +1 -1
  7. package/android/bigcrunch-ads/com/bigcrunch/ads/models/AdEvent.kt +81 -2
  8. package/android/bigcrunch-ads/com/bigcrunch/ads/models/PlacementConfig.kt +4 -1
  9. package/android/src/main/java/com/bigcrunch/ads/react/BigCrunchAdsModule.kt +57 -2
  10. package/ios/BigCrunchAds/Sources/Adapters/GoogleAdsAdapter.swift +7 -0
  11. package/ios/BigCrunchAds/Sources/BigCrunchAds.swift +29 -6
  12. package/ios/BigCrunchAds/Sources/BigCrunchRewarded.swift +10 -2
  13. package/ios/BigCrunchAds/Sources/Core/AdOrchestrator.swift +20 -4
  14. package/ios/BigCrunchAds/Sources/Core/AnalyticsClient.swift +193 -84
  15. package/ios/BigCrunchAds/Sources/Core/BidRequestClient.swift +54 -17
  16. package/ios/BigCrunchAds/Sources/Core/DeviceContext.swift +1 -1
  17. package/ios/BigCrunchAds/Sources/Models/AdEvent.swift +111 -3
  18. package/ios/BigCrunchAds/Sources/Models/PlacementConfig.swift +4 -1
  19. package/ios/BigCrunchAdsModule.m +6 -0
  20. package/ios/BigCrunchAdsModule.swift +39 -2
  21. package/ios/BigCrunchBannerViewManager.swift +1 -0
  22. package/lib/BigCrunchAds.d.ts +33 -2
  23. package/lib/BigCrunchAds.d.ts.map +1 -1
  24. package/lib/BigCrunchAds.js +35 -2
  25. package/lib/NativeBigCrunchAds.d.ts +3 -2
  26. package/lib/NativeBigCrunchAds.d.ts.map +1 -1
  27. package/lib/types/index.d.ts +40 -0
  28. package/lib/types/index.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/react-native-bigcrunch-ads.podspec +1 -1
  31. package/src/BigCrunchAds.ts +41 -2
  32. package/src/NativeBigCrunchAds.ts +5 -2
  33. package/src/types/index.ts +43 -0
@@ -38,6 +38,95 @@ internal struct RevenueData: Codable {
38
38
  let currency: String
39
39
  }
40
40
 
41
+ // MARK: - Screen View Options
42
+
43
+ /**
44
+ * Options for customizing screen view tracking
45
+ *
46
+ * Allows app developers to provide page URL, content metadata,
47
+ * and custom dimensions for analytics events.
48
+ */
49
+ public struct ScreenViewOptions {
50
+ /// Override the auto-generated page URL (must be a valid URL)
51
+ public var pageUrl: String?
52
+
53
+ /// Content metadata for this screen/page
54
+ public var pageMeta: PageMetaData?
55
+
56
+ /// Custom key-value dimensions attached to analytics events
57
+ public var customDimensions: [String: String]?
58
+
59
+ public init(
60
+ pageUrl: String? = nil,
61
+ pageMeta: PageMetaData? = nil,
62
+ customDimensions: [String: String]? = nil
63
+ ) {
64
+ self.pageUrl = pageUrl
65
+ self.pageMeta = pageMeta
66
+ self.customDimensions = customDimensions
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Content metadata for a screen/page view
72
+ *
73
+ * Matches the `page_meta_data` fields in the analytics schema.
74
+ */
75
+ public struct PageMetaData: Codable {
76
+ /// Canonical page URL
77
+ public var url: String?
78
+ /// Content author
79
+ public var author: String?
80
+ /// Page/screen title
81
+ public var title: String?
82
+ /// Featured image URL
83
+ public var thumbnailUrl: String?
84
+ /// Content section/category
85
+ public var articleSection: String?
86
+ /// Comma-separated keywords
87
+ public var keywords: String?
88
+ /// Content creation date (ISO 8601)
89
+ public var dateCreated: String?
90
+ /// Content last modified date (ISO 8601)
91
+ public var dateModified: String?
92
+ /// Content publication date (ISO 8601)
93
+ public var datePublished: String?
94
+
95
+ public init(
96
+ url: String? = nil,
97
+ author: String? = nil,
98
+ title: String? = nil,
99
+ thumbnailUrl: String? = nil,
100
+ articleSection: String? = nil,
101
+ keywords: String? = nil,
102
+ dateCreated: String? = nil,
103
+ dateModified: String? = nil,
104
+ datePublished: String? = nil
105
+ ) {
106
+ self.url = url
107
+ self.author = author
108
+ self.title = title
109
+ self.thumbnailUrl = thumbnailUrl
110
+ self.articleSection = articleSection
111
+ self.keywords = keywords
112
+ self.dateCreated = dateCreated
113
+ self.dateModified = dateModified
114
+ self.datePublished = datePublished
115
+ }
116
+
117
+ enum CodingKeys: String, CodingKey {
118
+ case url
119
+ case author
120
+ case title
121
+ case thumbnailUrl = "thumbnailUrl"
122
+ case articleSection = "articleSection"
123
+ case keywords
124
+ case dateCreated = "dateCreated"
125
+ case dateModified = "dateModified"
126
+ case datePublished = "datePublished"
127
+ }
128
+ }
129
+
41
130
  // MARK: - Enhanced Analytics Events (matching web SDK data model)
42
131
 
43
132
  /**
@@ -91,6 +180,9 @@ internal struct PageViewEvent: Codable {
91
180
  let amznPubId: String // Must be valid UUID (nil UUID for empty)
92
181
  let customDimensions: [String: String]
93
182
 
183
+ // Page metadata (only for pageview events)
184
+ let pageMetaData: PageMetaData?
185
+
94
186
  enum CodingKeys: String, CodingKey {
95
187
  case payloadVersion = "payload_version"
96
188
  case configVersion = "config_version"
@@ -123,6 +215,7 @@ internal struct PageViewEvent: Codable {
123
215
  case gamNetworkCode = "gam_network_code"
124
216
  case amznPubId = "amzn_pub_id"
125
217
  case customDimensions = "custom_dimensions"
218
+ case pageMetaData = "page_meta_data"
126
219
  }
127
220
  }
128
221
 
@@ -269,7 +362,7 @@ internal struct ImpressionBatchEvent: Codable {
269
362
  let customDimensions: [String: String]
270
363
 
271
364
  // Nested impressions array
272
- let impressions: [ImpressionRecord]
365
+ var impressions: [ImpressionRecord]
273
366
 
274
367
  enum CodingKeys: String, CodingKey {
275
368
  case payloadVersion = "payload_version"
@@ -577,7 +670,7 @@ internal struct ViewabilityEvent: Codable {
577
670
  let amznPubId: String
578
671
 
579
672
  // Nested viewability array (per backend schema)
580
- let viewability: [ViewabilityData]
673
+ var viewability: [ViewabilityData]
581
674
 
582
675
  enum CodingKeys: String, CodingKey {
583
676
  case payloadVersion = "payload_version"
@@ -735,8 +828,23 @@ internal struct AuctionData {
735
828
  /// Creative ID from winning bid
736
829
  let creativeId: String?
737
830
 
831
+ /// GAM price bucket (hb_pb value from targeting KVPs)
832
+ let gamPriceBucket: String?
833
+
834
+ /// Floor price sent to bidders
835
+ let floorPrice: Double?
836
+
837
+ /// Second-highest bid price (for computing min_bid_to_win)
838
+ let secondHighestBid: Double?
839
+
840
+ /// Demand channel ("S2S", "Google Ad Exchange", etc.)
841
+ let demandChannel: String?
842
+
738
843
  /// Empty auction data
739
- static let empty = AuctionData(auctionId: nil, bidder: nil, bidPriceCpm: nil, creativeId: nil)
844
+ static let empty = AuctionData(
845
+ auctionId: nil, bidder: nil, bidPriceCpm: nil, creativeId: nil,
846
+ gamPriceBucket: nil, floorPrice: nil, secondHighestBid: nil, demandChannel: nil
847
+ )
740
848
  }
741
849
 
742
850
  // MARK: - Impression Context
@@ -13,19 +13,22 @@ public struct PlacementConfig: Codable {
13
13
  public let gamAdUnit: String
14
14
  public let sizes: [AdSize]?
15
15
  public let refresh: RefreshConfig?
16
+ public let floorPrice: Double?
16
17
 
17
18
  public init(
18
19
  placementId: String,
19
20
  format: String,
20
21
  gamAdUnit: String,
21
22
  sizes: [AdSize]?,
22
- refresh: RefreshConfig? = nil
23
+ refresh: RefreshConfig? = nil,
24
+ floorPrice: Double? = nil
23
25
  ) {
24
26
  self.placementId = placementId
25
27
  self.format = format
26
28
  self.gamAdUnit = gamAdUnit
27
29
  self.sizes = sizes
28
30
  self.refresh = refresh
31
+ self.floorPrice = floorPrice
29
32
  }
30
33
  }
31
34
 
@@ -20,6 +20,7 @@ RCT_EXTERN_METHOD(isInitialized:(RCTPromiseResolveBlock)resolve
20
20
 
21
21
  // Screen Tracking
22
22
  RCT_EXTERN_METHOD(trackScreenView:(NSString *)screenName
23
+ options:(NSDictionary *)options
23
24
  resolver:(RCTPromiseResolveBlock)resolve
24
25
  rejecter:(RCTPromiseRejectBlock)reject)
25
26
 
@@ -88,6 +89,11 @@ RCT_EXTERN_METHOD(setCoppaCompliant:(BOOL)compliant
88
89
  resolver:(RCTPromiseResolveBlock)resolve
89
90
  rejecter:(RCTPromiseRejectBlock)reject)
90
91
 
92
+ // Account Type
93
+ RCT_EXTERN_METHOD(setAccountType:(NSString *)accountType
94
+ resolver:(RCTPromiseResolveBlock)resolve
95
+ rejecter:(RCTPromiseRejectBlock)reject)
96
+
91
97
  // Debug Settings
92
98
  RCT_EXTERN_METHOD(setDebugMode:(BOOL)enabled
93
99
  resolver:(RCTPromiseResolveBlock)resolve
@@ -1,4 +1,5 @@
1
1
  import Foundation
2
+ import BigCrunchAds
2
3
  #if canImport(React)
3
4
  import React
4
5
  #endif
@@ -278,12 +279,38 @@ class BigCrunchAdsModule: RCTEventEmitter {
278
279
 
279
280
  // MARK: - Screen Tracking
280
281
 
281
- @objc(trackScreenView:resolver:rejecter:)
282
+ @objc(trackScreenView:options:resolver:rejecter:)
282
283
  func trackScreenView(screenName: String,
284
+ options: NSDictionary?,
283
285
  resolver: @escaping RCTPromiseResolveBlock,
284
286
  rejecter: @escaping RCTPromiseRejectBlock) {
285
287
  DispatchQueue.main.async {
286
- BigCrunchAds.trackScreen(screenName)
288
+ var screenViewOptions: ScreenViewOptions? = nil
289
+
290
+ if let opts = options as? [String: Any] {
291
+ var pageMeta: PageMetaData? = nil
292
+ if let metaDict = opts["pageMeta"] as? [String: String] {
293
+ pageMeta = PageMetaData(
294
+ url: metaDict["url"],
295
+ author: metaDict["author"],
296
+ title: metaDict["title"],
297
+ thumbnailUrl: metaDict["thumbnailUrl"],
298
+ articleSection: metaDict["articleSection"],
299
+ keywords: metaDict["keywords"],
300
+ dateCreated: metaDict["dateCreated"],
301
+ dateModified: metaDict["dateModified"],
302
+ datePublished: metaDict["datePublished"]
303
+ )
304
+ }
305
+
306
+ screenViewOptions = ScreenViewOptions(
307
+ pageUrl: opts["pageUrl"] as? String,
308
+ pageMeta: pageMeta,
309
+ customDimensions: opts["customDimensions"] as? [String: String]
310
+ )
311
+ }
312
+
313
+ BigCrunchAds.trackScreen(screenName, options: screenViewOptions)
287
314
  resolver(nil)
288
315
  }
289
316
  }
@@ -589,6 +616,16 @@ class BigCrunchAdsModule: RCTEventEmitter {
589
616
  resolver(nil)
590
617
  }
591
618
 
619
+ // MARK: - Account Type
620
+
621
+ @objc(setAccountType:resolver:rejecter:)
622
+ func setAccountType(accountType: String,
623
+ resolver: RCTPromiseResolveBlock,
624
+ rejecter: RCTPromiseRejectBlock) {
625
+ BigCrunchAds.setAccountType(accountType)
626
+ resolver(nil)
627
+ }
628
+
592
629
  // MARK: - Debug & Testing
593
630
 
594
631
  @objc(setDebugMode:resolver:rejecter:)
@@ -1,4 +1,5 @@
1
1
  import Foundation
2
+ import BigCrunchAds
2
3
  import React
3
4
  import UIKit
4
5
  import GoogleMobileAds
@@ -2,7 +2,7 @@
2
2
  * BigCrunch Mobile Ads SDK for React Native
3
3
  * Main API class
4
4
  */
5
- import type { InitializationOptions, Environment, SessionInfo, DeviceContext, AppConfig, EventSubscription } from './types';
5
+ import type { InitializationOptions, Environment, AccountType, SessionInfo, DeviceContext, AppConfig, EventSubscription, ScreenViewOptions } from './types';
6
6
  /**
7
7
  * Main entry point for BigCrunch Mobile Ads SDK
8
8
  */
@@ -34,13 +34,30 @@ export declare class BigCrunchAds {
34
34
  * Track a screen view for analytics
35
35
  *
36
36
  * @param screenName - Name of the screen being viewed
37
+ * @param options - Optional overrides for page URL, content metadata, and custom dimensions
37
38
  *
38
39
  * @example
39
40
  * ```typescript
41
+ * // Simple usage
40
42
  * BigCrunchAds.trackScreenView('HomeScreen');
43
+ *
44
+ * // With options
45
+ * BigCrunchAds.trackScreenView('ArticlePage', {
46
+ * pageUrl: 'https://example.com/articles/123',
47
+ * pageMeta: {
48
+ * title: 'My Article Title',
49
+ * author: 'Jane Smith',
50
+ * articleSection: 'Technology',
51
+ * keywords: 'tech,mobile,apps',
52
+ * },
53
+ * customDimensions: {
54
+ * content_type: 'article',
55
+ * content_id: '123',
56
+ * },
57
+ * });
41
58
  * ```
42
59
  */
43
- static trackScreenView(screenName: string): Promise<void>;
60
+ static trackScreenView(screenName: string, options?: ScreenViewOptions): Promise<void>;
44
61
  /**
45
62
  * Get the current app configuration
46
63
  * Returns null if config hasn't been loaded yet
@@ -80,6 +97,20 @@ export declare class BigCrunchAds {
80
97
  * @param isCompliant - Whether the app is COPPA compliant
81
98
  */
82
99
  static setCoppaCompliant(isCompliant: boolean): Promise<void>;
100
+ /**
101
+ * Set the account type for the current user
102
+ *
103
+ * This value is included in all analytics events (pageviews, impressions, revenue, etc.)
104
+ * and persists until changed. Defaults to 'guest' if not set.
105
+ *
106
+ * @param accountType - The user's account type
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * BigCrunchAds.setAccountType('subscriber');
111
+ * ```
112
+ */
113
+ static setAccountType(accountType: AccountType): Promise<void>;
83
114
  /**
84
115
  * Enable or disable debug mode
85
116
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BigCrunchAds.d.ts","sourceRoot":"","sources":["../src/BigCrunchAds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BigCrunchAds.d.ts","sourceRoot":"","sources":["../src/BigCrunchAds.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA8B;IAElE;;;;;;;;;;;;;;;OAeG;WACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,WAA0B,EACvC,OAAO,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IA0BhB;;OAEG;WACU,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAO9C;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;WACU,eAAe,CAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAKhB;;;OAGG;WACU,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAKtD;;OAEG;WACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3C;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAKnD;;OAEG;WACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;WACU,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAIvD;;;;OAIG;WACU,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;;;OAIG;WACU,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;OAIG;WACU,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;;;;;;;;;OAYG;WACU,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;;;OAIG;WACU,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;;;OAIG;WACU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;;;OAIG;WACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhD;;;;;;;;;;;;;;;;;;OAkBG;WACU,gBAAgB,CAAC,MAAM,EAAE;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjB;;OAEG;WACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAC7B,iBAAiB;IAOpB;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,iBAAiB;IAIhF;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,iBAAiB;IAI1E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,iBAAiB;IAIpF;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,iBAAiB;IAIlF;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAOjC;AAGD,eAAe,YAAY,CAAC"}
@@ -60,15 +60,32 @@ export class BigCrunchAds {
60
60
  * Track a screen view for analytics
61
61
  *
62
62
  * @param screenName - Name of the screen being viewed
63
+ * @param options - Optional overrides for page URL, content metadata, and custom dimensions
63
64
  *
64
65
  * @example
65
66
  * ```typescript
67
+ * // Simple usage
66
68
  * BigCrunchAds.trackScreenView('HomeScreen');
69
+ *
70
+ * // With options
71
+ * BigCrunchAds.trackScreenView('ArticlePage', {
72
+ * pageUrl: 'https://example.com/articles/123',
73
+ * pageMeta: {
74
+ * title: 'My Article Title',
75
+ * author: 'Jane Smith',
76
+ * articleSection: 'Technology',
77
+ * keywords: 'tech,mobile,apps',
78
+ * },
79
+ * customDimensions: {
80
+ * content_type: 'article',
81
+ * content_id: '123',
82
+ * },
83
+ * });
67
84
  * ```
68
85
  */
69
- static async trackScreenView(screenName) {
86
+ static async trackScreenView(screenName, options) {
70
87
  this.ensureInitialized();
71
- return NativeBigCrunchAds.trackScreenView(screenName);
88
+ return NativeBigCrunchAds.trackScreenView(screenName, options);
72
89
  }
73
90
  /**
74
91
  * Get the current app configuration
@@ -129,6 +146,22 @@ export class BigCrunchAds {
129
146
  static async setCoppaCompliant(isCompliant) {
130
147
  return NativeBigCrunchAds.setCoppaCompliant(isCompliant);
131
148
  }
149
+ /**
150
+ * Set the account type for the current user
151
+ *
152
+ * This value is included in all analytics events (pageviews, impressions, revenue, etc.)
153
+ * and persists until changed. Defaults to 'guest' if not set.
154
+ *
155
+ * @param accountType - The user's account type
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * BigCrunchAds.setAccountType('subscriber');
160
+ * ```
161
+ */
162
+ static async setAccountType(accountType) {
163
+ return NativeBigCrunchAds.setAccountType(accountType);
164
+ }
132
165
  /**
133
166
  * Enable or disable debug mode
134
167
  *
@@ -3,13 +3,13 @@
3
3
  * This is the bridge to the native Android/iOS implementation
4
4
  */
5
5
  import { NativeEventEmitter } from 'react-native';
6
- import type { InitializationOptions, AdRequestOptions, SessionInfo, DeviceContext, AppConfig } from './types';
6
+ import type { InitializationOptions, AdRequestOptions, SessionInfo, DeviceContext, AppConfig, ScreenViewOptions } from './types';
7
7
  export interface NativeBigCrunchAdsModule {
8
8
  initialize(options: InitializationOptions): Promise<void>;
9
9
  isInitialized(): Promise<boolean>;
10
10
  getAppConfig(): Promise<AppConfig | null>;
11
11
  refreshConfig(): Promise<void>;
12
- trackScreenView(screenName: string): Promise<void>;
12
+ trackScreenView(screenName: string, options?: ScreenViewOptions): Promise<void>;
13
13
  loadInterstitial(options: AdRequestOptions): Promise<void>;
14
14
  showInterstitial(placementId: string): Promise<void>;
15
15
  isInterstitialLoaded(placementId: string): Promise<boolean>;
@@ -24,6 +24,7 @@ export interface NativeBigCrunchAdsModule {
24
24
  setGdprConsent(consent: string): Promise<void>;
25
25
  setCcpaString(ccpaString: string): Promise<void>;
26
26
  setCoppaCompliant(isCompliant: boolean): Promise<void>;
27
+ setAccountType(accountType: string): Promise<void>;
27
28
  setDebugMode(enabled: boolean): Promise<void>;
28
29
  addTestDevice(deviceId: string): Promise<void>;
29
30
  removeTestDevice(deviceId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeBigCrunchAds.d.ts","sourceRoot":"","sources":["../src/NativeBigCrunchAds.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,kBAAkB,EAAY,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG9G,MAAM,WAAW,wBAAwB;IAEvC,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlC,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/B,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGnD,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGxD,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGpD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjC,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAG3C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAGpC,gBAAgB,CAAC,MAAM,EAAE;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAgBD,eAAO,MAAM,kBAAkB,EAAyB,wBAAwB,CAAC;AAGjF,eAAO,MAAM,wBAAwB,oBAA6C,CAAC;AAGnF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCnB,CAAC"}
1
+ {"version":3,"file":"NativeBigCrunchAds.d.ts","sourceRoot":"","sources":["../src/NativeBigCrunchAds.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,kBAAkB,EAAY,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGjI,MAAM,WAAW,wBAAwB;IAEvC,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlC,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/B,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGhF,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGxD,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGpD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjC,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAG3C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGnD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAGpC,gBAAgB,CAAC,MAAM,EAAE;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAgBD,eAAO,MAAM,kBAAkB,EAAyB,wBAAwB,CAAC;AAGjF,eAAO,MAAM,wBAAwB,oBAA6C,CAAC;AAGnF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCnB,CAAC"}
@@ -9,6 +9,10 @@ export * from './ads';
9
9
  * SDK Environment options
10
10
  */
11
11
  export type Environment = 'production' | 'sandbox';
12
+ /**
13
+ * Account type for the current user
14
+ */
15
+ export type AccountType = 'guest' | 'logged_in' | 'paid' | 'subscriber' | 'free';
12
16
  /**
13
17
  * Ad formats supported by the SDK
14
18
  */
@@ -43,6 +47,42 @@ export interface InitializationOptions {
43
47
  /** Session timeout in seconds (default: 1800) */
44
48
  sessionTimeout?: number;
45
49
  }
50
+ /**
51
+ * Content metadata for a screen/page view
52
+ *
53
+ * Matches the `page_meta_data` fields in the BigCrunch analytics schema.
54
+ */
55
+ export interface PageMetaData {
56
+ /** Canonical page URL */
57
+ url?: string;
58
+ /** Content author */
59
+ author?: string;
60
+ /** Page/screen title */
61
+ title?: string;
62
+ /** Featured image URL */
63
+ thumbnailUrl?: string;
64
+ /** Content section/category */
65
+ articleSection?: string;
66
+ /** Comma-separated keywords */
67
+ keywords?: string;
68
+ /** Content creation date (ISO 8601) */
69
+ dateCreated?: string;
70
+ /** Content last modified date (ISO 8601) */
71
+ dateModified?: string;
72
+ /** Content publication date (ISO 8601) */
73
+ datePublished?: string;
74
+ }
75
+ /**
76
+ * Options for customizing screen view tracking
77
+ */
78
+ export interface ScreenViewOptions {
79
+ /** Override the auto-generated page URL (must be a valid web URL) */
80
+ pageUrl?: string;
81
+ /** Content metadata for this screen/page */
82
+ pageMeta?: PageMetaData;
83
+ /** Custom key-value dimensions attached to analytics events */
84
+ customDimensions?: Record<string, string>;
85
+ }
46
86
  /**
47
87
  * Ad request options
48
88
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigcrunch/react-native-ads",
3
- "version": "0.11.0",
3
+ "version": "0.14.0",
4
4
  "description": "BigCrunch Mobile Ads SDK for React Native - Simplified in-app advertising with S2S demand and Google Ad Manager",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -19,7 +19,7 @@ Pod::Spec.new do |s|
19
19
  s.requires_arc = true
20
20
 
21
21
  s.dependency "React"
22
- s.dependency "Google-Mobile-Ads-SDK", ">= 10.14.0"
22
+ s.dependency "BigCrunchAds"
23
23
 
24
24
  s.swift_version = "5.9"
25
25
  end
@@ -11,10 +11,12 @@ import {
11
11
  import type {
12
12
  InitializationOptions,
13
13
  Environment,
14
+ AccountType,
14
15
  SessionInfo,
15
16
  DeviceContext,
16
17
  AppConfig,
17
18
  EventSubscription,
19
+ ScreenViewOptions,
18
20
  } from './types';
19
21
 
20
22
  /**
@@ -84,15 +86,35 @@ export class BigCrunchAds {
84
86
  * Track a screen view for analytics
85
87
  *
86
88
  * @param screenName - Name of the screen being viewed
89
+ * @param options - Optional overrides for page URL, content metadata, and custom dimensions
87
90
  *
88
91
  * @example
89
92
  * ```typescript
93
+ * // Simple usage
90
94
  * BigCrunchAds.trackScreenView('HomeScreen');
95
+ *
96
+ * // With options
97
+ * BigCrunchAds.trackScreenView('ArticlePage', {
98
+ * pageUrl: 'https://example.com/articles/123',
99
+ * pageMeta: {
100
+ * title: 'My Article Title',
101
+ * author: 'Jane Smith',
102
+ * articleSection: 'Technology',
103
+ * keywords: 'tech,mobile,apps',
104
+ * },
105
+ * customDimensions: {
106
+ * content_type: 'article',
107
+ * content_id: '123',
108
+ * },
109
+ * });
91
110
  * ```
92
111
  */
93
- static async trackScreenView(screenName: string): Promise<void> {
112
+ static async trackScreenView(
113
+ screenName: string,
114
+ options?: ScreenViewOptions
115
+ ): Promise<void> {
94
116
  this.ensureInitialized();
95
- return NativeBigCrunchAds.trackScreenView(screenName);
117
+ return NativeBigCrunchAds.trackScreenView(screenName, options);
96
118
  }
97
119
 
98
120
  /**
@@ -162,6 +184,23 @@ export class BigCrunchAds {
162
184
  return NativeBigCrunchAds.setCoppaCompliant(isCompliant);
163
185
  }
164
186
 
187
+ /**
188
+ * Set the account type for the current user
189
+ *
190
+ * This value is included in all analytics events (pageviews, impressions, revenue, etc.)
191
+ * and persists until changed. Defaults to 'guest' if not set.
192
+ *
193
+ * @param accountType - The user's account type
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * BigCrunchAds.setAccountType('subscriber');
198
+ * ```
199
+ */
200
+ static async setAccountType(accountType: AccountType): Promise<void> {
201
+ return NativeBigCrunchAds.setAccountType(accountType);
202
+ }
203
+
165
204
  /**
166
205
  * Enable or disable debug mode
167
206
  *
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { NativeModules, NativeEventEmitter, Platform } from 'react-native';
7
- import type { InitializationOptions, AdRequestOptions, SessionInfo, DeviceContext, AppConfig } from './types';
7
+ import type { InitializationOptions, AdRequestOptions, SessionInfo, DeviceContext, AppConfig, ScreenViewOptions } from './types';
8
8
 
9
9
  // Type definition for the native module
10
10
  export interface NativeBigCrunchAdsModule {
@@ -17,7 +17,7 @@ export interface NativeBigCrunchAdsModule {
17
17
  refreshConfig(): Promise<void>;
18
18
 
19
19
  // Screen tracking
20
- trackScreenView(screenName: string): Promise<void>;
20
+ trackScreenView(screenName: string, options?: ScreenViewOptions): Promise<void>;
21
21
 
22
22
  // Interstitial ads
23
23
  loadInterstitial(options: AdRequestOptions): Promise<void>;
@@ -43,6 +43,9 @@ export interface NativeBigCrunchAdsModule {
43
43
  setCcpaString(ccpaString: string): Promise<void>;
44
44
  setCoppaCompliant(isCompliant: boolean): Promise<void>;
45
45
 
46
+ // Account type
47
+ setAccountType(accountType: string): Promise<void>;
48
+
46
49
  // Debug
47
50
  setDebugMode(enabled: boolean): Promise<void>;
48
51
  addTestDevice(deviceId: string): Promise<void>;