@adtogether/react-native-sdk 0.1.12 → 0.1.14

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## 0.1.14
2
+
3
+ * **Feature**: Added `onAdClosed` callback support to banner components.
4
+ * **Feature**: Improved automatic `bundleId` detection across all platforms.
5
+ * **Security**: Hardened ad-serving logic to prevent payout fraud.
6
+ * **Sync**: Version parity across all AdTogether SDKs.
7
+
8
+ ## 0.1.12
9
+
10
+ * **Feature**: Added `showCloseButton` to `AdTogetherBanner`.
11
+ * **Standardization**: Support for `onAdLoaded` and `onAdFailedToLoad` with unified naming conventions.
12
+ * **Layout**: Enhanced responsiveness and safe area handling.
13
+
1
14
  ## 0.1.9
2
15
 
3
16
  * **Feature**: Added `onAdLoaded` and `onAdFailedToLoad` callback support to both `AdTogetherBanner` and `AdTogetherInterstitial`.
package/README.md CHANGED
@@ -46,7 +46,10 @@ Call `AdTogether.initialize()` before rendering any ad components. You can obtai
46
46
  ```typescript
47
47
  import { AdTogether } from '@adtogether/react-native-sdk';
48
48
 
49
- AdTogether.initialize({ appId: 'YOUR_APP_ID' });
49
+ AdTogether.initialize({
50
+ appId: 'YOUR_APP_ID',
51
+ // bundleId: 'com.example.app' // optional: auto-detected when possible
52
+ });
50
53
  ```
51
54
 
52
55
  ## Usage
@@ -66,8 +69,10 @@ function MyApp() {
66
69
 
67
70
  <AdTogetherBanner
68
71
  adUnitId="home_bottom_banner"
72
+ showCloseButton={true}
69
73
  onAdLoaded={() => console.log('Banner loaded!')}
70
74
  onAdFailedToLoad={(error) => console.error('Banner error:', error)}
75
+ onAdClosed={() => console.log('Banner closed!')}
71
76
  />
72
77
  </View>
73
78
  );
@@ -79,6 +84,8 @@ function MyApp() {
79
84
  | Prop | Type | Default | Description |
80
85
  |--------------------|-------------------------|-----------|-------------|
81
86
  | `adUnitId` | `string` | **required** | Unique identifier for this ad placement. |
87
+ | `showCloseButton` | `boolean` | `false` | Show a dismissable close button overlay. |
88
+ | `onAdClosed` | `() => void` | — | Called when the user closes the ad. |
82
89
  | `theme` | `'dark' \| 'light' \| 'auto'` | `'auto'` | Color scheme. `'auto'` follows system preference. |
83
90
  | `onAdLoaded` | `() => void` | — | Called when the ad has been successfully fetched and rendered. |
84
91
  | `onAdFailedToLoad` | `(error: Error) => void`| — | Called if the ad fails to load. |
@@ -15,16 +15,71 @@ class AdTogether {
15
15
  }
16
16
  return AdTogether.instance;
17
17
  }
18
+
19
+ /**
20
+ * Attempts to auto-detect the app's bundle/package identifier.
21
+ * Tries multiple sources in order:
22
+ * 1. expo-application (if Expo is available)
23
+ * 2. react-native-device-info (if installed)
24
+ * 3. RN's built-in PlatformConstants (Android only)
25
+ */
26
+ static tryAutoDetectBundleId() {
27
+ // 1. Try expo-application (works in Expo and bare RN with expo modules)
28
+ try {
29
+ const ExpoApplication = require('expo-application');
30
+ if (ExpoApplication?.applicationId) {
31
+ return ExpoApplication.applicationId;
32
+ }
33
+ } catch (_) {
34
+ // expo-application not available
35
+ }
36
+
37
+ // 2. Try react-native-device-info (popular community module)
38
+ try {
39
+ const DeviceInfo = require('react-native-device-info');
40
+ if (DeviceInfo?.getBundleId) {
41
+ return DeviceInfo.getBundleId();
42
+ }
43
+ } catch (_) {
44
+ // react-native-device-info not available
45
+ }
46
+
47
+ // 3. Try RN's built-in PlatformConstants (Android exposes package name)
48
+ try {
49
+ if (_reactNative.Platform.OS === 'android') {
50
+ const constants = _reactNative.NativeModules.PlatformConstants;
51
+ if (constants?.reactNativeVersion) {
52
+ // On Android, the ServerHost module sometimes exposes the package name
53
+ const appModule = _reactNative.NativeModules.RNDeviceInfo || _reactNative.NativeModules.AppInfo;
54
+ if (appModule?.bundleId) {
55
+ return appModule.bundleId;
56
+ }
57
+ }
58
+ }
59
+ } catch (_) {
60
+ // PlatformConstants not available
61
+ }
62
+ return undefined;
63
+ }
18
64
  static initialize(options) {
19
65
  const sdk = AdTogether.shared;
20
66
  sdk.appId = options.apiKey || options.appId;
67
+ if (options.bundleId) {
68
+ sdk.bundleId = options.bundleId;
69
+ } else {
70
+ // Auto-detect bundleId from available native modules
71
+ sdk.bundleId = AdTogether.tryAutoDetectBundleId();
72
+ if (!sdk.bundleId) {
73
+ console.warn('AdTogether: Could not auto-detect bundleId. ' + 'For best results, provide bundleId in initialize() options, ' + 'or install expo-application or react-native-device-info.');
74
+ }
75
+ }
21
76
  if (options.allowSelfAds !== undefined) {
22
77
  sdk.allowSelfAds = options.allowSelfAds;
23
78
  }
24
79
  if (options.baseUrl) {
25
80
  sdk.baseUrl = options.baseUrl;
26
81
  }
27
- console.log(`AdTogether SDK Initialized with App ID: ${sdk.appId}`);
82
+ console.log(`AdTogether SDK Initialized with App ID: ${sdk.appId}${sdk.bundleId ? `, Bundle ID: ${sdk.bundleId}` : ''}`);
28
83
  }
29
84
  assertInitialized() {
30
85
  if (!this.appId) {
@@ -46,9 +101,12 @@ class AdTogether {
46
101
  if (sdk.lastAdId) {
47
102
  url += `&exclude=${sdk.lastAdId}`;
48
103
  }
104
+ if (sdk.bundleId) {
105
+ url += `&bundleId=${sdk.bundleId}`;
106
+ }
49
107
 
50
- // Pass allowSelfAds
51
- url += `&allowSelfAds=${sdk.allowSelfAds}&platform=${_reactNative.Platform.OS}`;
108
+ // Pass allowSelfAds (removed platform from fetch URL to match other SDKs)
109
+ url += `&allowSelfAds=${sdk.allowSelfAds}`;
52
110
  const response = await fetch(url);
53
111
  if (response.ok) {
54
112
  const ad = await response.json();
@@ -76,7 +134,13 @@ class AdTogether {
76
134
  body: JSON.stringify({
77
135
  adId,
78
136
  token,
79
- apiKey: AdTogether.shared.appId
137
+ apiKey: AdTogether.shared.appId,
138
+ ...(AdTogether.shared.bundleId ? {
139
+ bundleId: AdTogether.shared.bundleId
140
+ } : {}),
141
+ // Send platform and environment to match Flutter SDK
142
+ platform: _reactNative.Platform.OS,
143
+ environment: __DEV__ ? 'development' : 'production'
80
144
  })
81
145
  }).catch(console.error);
82
146
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","AdTogether","allowSelfAds","baseUrl","constructor","shared","instance","initialize","options","sdk","appId","apiKey","undefined","console","log","assertInitialized","error","fetchAd","adUnitId","adType","Error","url","lastAdId","Platform","OS","response","fetch","ok","ad","json","id","status","err","trackImpression","adId","token","trackEvent","trackClick","endpoint","method","headers","body","JSON","stringify","catch","exports"],"sourceRoot":"../../src","sources":["AdTogether.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","AdTogether","allowSelfAds","baseUrl","constructor","shared","instance","tryAutoDetectBundleId","ExpoApplication","applicationId","_","DeviceInfo","getBundleId","Platform","OS","constants","NativeModules","PlatformConstants","reactNativeVersion","appModule","RNDeviceInfo","AppInfo","bundleId","undefined","initialize","options","sdk","appId","apiKey","console","warn","log","assertInitialized","error","fetchAd","adUnitId","adType","Error","url","lastAdId","response","fetch","ok","ad","json","id","status","err","trackImpression","adId","token","trackEvent","trackClick","endpoint","method","headers","body","JSON","stringify","platform","environment","__DEV__","catch","exports"],"sourceRoot":"../../src","sources":["AdTogether.ts"],"mappings":"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","ignoreList":[]}
@@ -13,12 +13,15 @@ const AdTogetherBanner = ({
13
13
  adUnitId,
14
14
  onAdLoaded,
15
15
  onAdFailedToLoad,
16
+ showCloseButton = false,
17
+ onAdClosed,
16
18
  theme = 'auto',
17
19
  style
18
20
  }) => {
19
21
  const [adData, setAdData] = (0, _react.useState)(null);
20
22
  const [isLoading, setIsLoading] = (0, _react.useState)(true);
21
23
  const [hasError, setHasError] = (0, _react.useState)(false);
24
+ const [isVisible, setIsVisible] = (0, _react.useState)(true);
22
25
  const systemColorScheme = (0, _reactNative.useColorScheme)();
23
26
  const impressionTrackedRef = (0, _react.useRef)(false);
24
27
  (0, _react.useEffect)(() => {
@@ -56,6 +59,13 @@ const AdTogetherBanner = ({
56
59
  _reactNative.Linking.openURL(adData.clickUrl).catch(console.error);
57
60
  }
58
61
  };
62
+ const handleClose = () => {
63
+ setIsVisible(false);
64
+ onAdClosed?.();
65
+ };
66
+ if (!isVisible) {
67
+ return null;
68
+ }
59
69
  if (isLoading) {
60
70
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
61
71
  style: [styles.container, style]
@@ -109,6 +119,16 @@ const AdTogetherBanner = ({
109
119
  numberOfLines: 2,
110
120
  children: adData.description
111
121
  })]
122
+ }), showCloseButton && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
123
+ onPress: handleClose,
124
+ style: styles.closeButton,
125
+ hitSlop: 8,
126
+ accessibilityLabel: "Close ad",
127
+ accessibilityRole: "button",
128
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
129
+ style: styles.closeButtonText,
130
+ children: "\xD7"
131
+ })
112
132
  })]
113
133
  });
114
134
  };
@@ -169,6 +189,24 @@ const styles = _reactNative.StyleSheet.create({
169
189
  },
170
190
  description: {
171
191
  fontSize: 12
192
+ },
193
+ closeButton: {
194
+ position: 'absolute',
195
+ top: 8,
196
+ right: 8,
197
+ width: 24,
198
+ height: 24,
199
+ borderRadius: 12,
200
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
201
+ alignItems: 'center',
202
+ justifyContent: 'center',
203
+ zIndex: 1
204
+ },
205
+ closeButtonText: {
206
+ color: '#fff',
207
+ fontSize: 16,
208
+ fontWeight: 'bold',
209
+ lineHeight: 18
172
210
  }
173
211
  });
174
212
  //# sourceMappingURL=AdTogetherBanner.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_AdTogether","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AdTogetherBanner","adUnitId","onAdLoaded","onAdFailedToLoad","theme","style","adData","setAdData","useState","isLoading","setIsLoading","hasError","setHasError","systemColorScheme","useColorScheme","impressionTrackedRef","useRef","useEffect","isMounted","AdTogether","fetchAd","then","ad","catch","err","console","error","current","trackImpression","id","token","handlePress","trackClick","clickUrl","Linking","openURL","jsx","View","styles","container","isDarkMode","bgColor","borderColor","textColor","descColor","jsxs","TouchableOpacity","activeOpacity","onPress","backgroundColor","children","imageUrl","imageContainer","Image","source","uri","image","resizeMode","textContainer","headerRow","Text","title","color","numberOfLines","adBadge","adBadgeText","description","exports","StyleSheet","create","flexDirection","width","minHeight","borderRadius","borderWidth","overflow","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","elevation","padding","flex","justifyContent","alignItems","marginBottom","fontWeight","fontSize","paddingHorizontal","paddingVertical","marginLeft"],"sourceRoot":"../../src","sources":["AdTogetherBanner.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_AdTogether","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AdTogetherBanner","adUnitId","onAdLoaded","onAdFailedToLoad","showCloseButton","onAdClosed","theme","style","adData","setAdData","useState","isLoading","setIsLoading","hasError","setHasError","isVisible","setIsVisible","systemColorScheme","useColorScheme","impressionTrackedRef","useRef","useEffect","isMounted","AdTogether","fetchAd","then","ad","catch","err","console","error","current","trackImpression","id","token","handlePress","trackClick","clickUrl","Linking","openURL","handleClose","jsx","View","styles","container","isDarkMode","bgColor","borderColor","textColor","descColor","jsxs","TouchableOpacity","activeOpacity","onPress","backgroundColor","children","imageUrl","imageContainer","Image","source","uri","image","resizeMode","textContainer","headerRow","Text","title","color","numberOfLines","adBadge","adBadgeText","description","Pressable","closeButton","hitSlop","accessibilityLabel","accessibilityRole","closeButtonText","exports","StyleSheet","create","flexDirection","width","minHeight","borderRadius","borderWidth","overflow","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","elevation","padding","flex","justifyContent","alignItems","marginBottom","fontWeight","fontSize","paddingHorizontal","paddingVertical","marginLeft","position","top","right","zIndex","lineHeight"],"sourceRoot":"../../src","sources":["AdTogetherBanner.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAA0C,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAgBnC,MAAMkB,gBAAiD,GAAGA,CAAC;EAChEC,QAAQ;EACRC,UAAU;EACVC,gBAAgB;EAChBC,eAAe,GAAG,KAAK;EACvBC,UAAU;EACVC,KAAK,GAAG,MAAM;EACdC;AACF,CAAC,KAAK;EACJ,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAiB,IAAI,CAAC;EAC1D,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAF,eAAQ,EAAC,IAAI,CAAC;EAChD,MAAM,CAACG,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAJ,eAAQ,EAAC,KAAK,CAAC;EAC/C,MAAM,CAACK,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAN,eAAQ,EAAC,IAAI,CAAC;EAChD,MAAMO,iBAAiB,GAAG,IAAAC,2BAAc,EAAC,CAAC;EAE1C,MAAMC,oBAAoB,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EAE1C,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIC,SAAS,GAAG,IAAI;IAEpBC,sBAAU,CAACC,OAAO,CAACvB,QAAQ,EAAE,QAAQ,CAAC,CACnCwB,IAAI,CAAEC,EAAE,IAAK;MACZ,IAAIJ,SAAS,EAAE;QACbb,SAAS,CAACiB,EAAE,CAAC;QACbd,YAAY,CAAC,KAAK,CAAC;QACnBV,UAAU,GAAG,CAAC;MAChB;IACF,CAAC,CAAC,CACDyB,KAAK,CAAEC,GAAG,IAAK;MACd,IAAIN,SAAS,EAAE;QACbO,OAAO,CAACC,KAAK,CAAC,+BAA+B,EAAEF,GAAG,CAAC;QACnDd,WAAW,CAAC,IAAI,CAAC;QACjBF,YAAY,CAAC,KAAK,CAAC;QACnBT,gBAAgB,GAAGyB,GAAG,CAAC;MACzB;IACF,CAAC,CAAC;IAEJ,OAAO,MAAM;MACXN,SAAS,GAAG,KAAK;IACnB,CAAC;EACH,CAAC,EAAE,CAACrB,QAAQ,EAAEC,UAAU,EAAEC,gBAAgB,CAAC,CAAC;;EAE5C;EACA,IAAAkB,gBAAS,EAAC,MAAM;IACd,IAAIb,MAAM,IAAI,CAACG,SAAS,IAAI,CAACE,QAAQ,IAAI,CAACM,oBAAoB,CAACY,OAAO,EAAE;MACtEZ,oBAAoB,CAACY,OAAO,GAAG,IAAI;MACnCR,sBAAU,CAACS,eAAe,CAACxB,MAAM,CAACyB,EAAE,EAAEzB,MAAM,CAAC0B,KAAK,CAAC;IACrD;EACF,CAAC,EAAE,CAAC1B,MAAM,EAAEG,SAAS,EAAEE,QAAQ,CAAC,CAAC;EAEjC,MAAMsB,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAI,CAAC3B,MAAM,EAAE;IACbe,sBAAU,CAACa,UAAU,CAAC5B,MAAM,CAACyB,EAAE,EAAEzB,MAAM,CAAC0B,KAAK,CAAC;IAC9C,IAAI1B,MAAM,CAAC6B,QAAQ,EAAE;MACnBC,oBAAO,CAACC,OAAO,CAAC/B,MAAM,CAAC6B,QAAQ,CAAC,CAACV,KAAK,CAACE,OAAO,CAACC,KAAK,CAAC;IACvD;EACF,CAAC;EAED,MAAMU,WAAW,GAAGA,CAAA,KAAM;IACxBxB,YAAY,CAAC,KAAK,CAAC;IACnBX,UAAU,GAAG,CAAC;EAChB,CAAC;EAED,IAAI,CAACU,SAAS,EAAE;IACd,OAAO,IAAI;EACb;EAEA,IAAIJ,SAAS,EAAE;IACb,oBAAO,IAAA/B,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAgE,IAAI;MAACnC,KAAK,EAAE,CAACoC,MAAM,CAACC,SAAS,EAAErC,KAAK;IAAE,CAAE,CAAC;EACnD;EAEA,IAAIM,QAAQ,IAAI,CAACL,MAAM,EAAE;IACvB,OAAO,IAAI;EACb;EAEA,MAAMqC,UAAU,GAAGvC,KAAK,KAAK,MAAM,GAAGW,iBAAiB,KAAK,MAAM,GAAGX,KAAK,KAAK,MAAM;EAErF,MAAMwC,OAAO,GAAGD,UAAU,GAAG,SAAS,GAAG,SAAS;EAClD,MAAME,WAAW,GAAGF,UAAU,GAAG,uBAAuB,GAAG,iBAAiB;EAC5E,MAAMG,SAAS,GAAGH,UAAU,GAAG,SAAS,GAAG,SAAS;EACpD,MAAMI,SAAS,GAAGJ,UAAU,GAAG,SAAS,GAAG,SAAS;EAEpD,oBACE,IAAAjE,WAAA,CAAAsE,IAAA,EAACxE,YAAA,CAAAyE,gBAAgB;IACfC,aAAa,EAAE,GAAI;IACnBC,OAAO,EAAElB,WAAY;IACrB5B,KAAK,EAAE,CACLoC,MAAM,CAACC,SAAS,EAChB;MAAEU,eAAe,EAAER,OAAO;MAAEC;IAAY,CAAC,EACzCxC,KAAK,CACL;IAAAgD,QAAA,GAED/C,MAAM,CAACgD,QAAQ,gBACd,IAAA5E,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAgE,IAAI;MAACnC,KAAK,EAAEoC,MAAM,CAACc,cAAe;MAAAF,QAAA,eACjC,IAAA3E,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAgF,KAAK;QACJC,MAAM,EAAE;UAAEC,GAAG,EAAEpD,MAAM,CAACgD;QAAS,CAAE;QACjCjD,KAAK,EAAEoC,MAAM,CAACkB,KAAM;QACpBC,UAAU,EAAC;MAAO,CACnB;IAAC,CACE,CAAC,GACL,IAAI,eACR,IAAAlF,WAAA,CAAAsE,IAAA,EAACxE,YAAA,CAAAgE,IAAI;MAACnC,KAAK,EAAEoC,MAAM,CAACoB,aAAc;MAAAR,QAAA,gBAChC,IAAA3E,WAAA,CAAAsE,IAAA,EAACxE,YAAA,CAAAgE,IAAI;QAACnC,KAAK,EAAEoC,MAAM,CAACqB,SAAU;QAAAT,QAAA,gBAC5B,IAAA3E,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAuF,IAAI;UAAC1D,KAAK,EAAE,CAACoC,MAAM,CAACuB,KAAK,EAAE;YAAEC,KAAK,EAAEnB;UAAU,CAAC,CAAE;UAACoB,aAAa,EAAE,CAAE;UAAAb,QAAA,EACjE/C,MAAM,CAAC0D;QAAK,CACT,CAAC,eACP,IAAAtF,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAgE,IAAI;UAACnC,KAAK,EAAEoC,MAAM,CAAC0B,OAAQ;UAAAd,QAAA,eAC1B,IAAA3E,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAuF,IAAI;YAAC1D,KAAK,EAAEoC,MAAM,CAAC2B,WAAY;YAAAf,QAAA,EAAC;UAAE,CAAM;QAAC,CACtC,CAAC;MAAA,CACH,CAAC,eACP,IAAA3E,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAuF,IAAI;QAAC1D,KAAK,EAAE,CAACoC,MAAM,CAAC4B,WAAW,EAAE;UAAEJ,KAAK,EAAElB;QAAU,CAAC,CAAE;QAACmB,aAAa,EAAE,CAAE;QAAAb,QAAA,EACvE/C,MAAM,CAAC+D;MAAW,CACf,CAAC;IAAA,CACH,CAAC,EACNnE,eAAe,iBACd,IAAAxB,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAA8F,SAAS;MACRnB,OAAO,EAAEb,WAAY;MACrBjC,KAAK,EAAEoC,MAAM,CAAC8B,WAAY;MAC1BC,OAAO,EAAE,CAAE;MACXC,kBAAkB,EAAC,UAAU;MAC7BC,iBAAiB,EAAC,QAAQ;MAAArB,QAAA,eAE1B,IAAA3E,WAAA,CAAA6D,GAAA,EAAC/D,YAAA,CAAAuF,IAAI;QAAC1D,KAAK,EAAEoC,MAAM,CAACkC,eAAgB;QAAAtB,QAAA,EAAC;MAAC,CAAM;IAAC,CACpC,CACZ;EAAA,CACe,CAAC;AAEvB,CAAC;AAACuB,OAAA,CAAA9E,gBAAA,GAAAA,gBAAA;AAEF,MAAM2C,MAAM,GAAGoC,uBAAU,CAACC,MAAM,CAAC;EAC/BpC,SAAS,EAAE;IACTqC,aAAa,EAAE,KAAK;IACpBC,KAAK,EAAE,MAAM;IACbC,SAAS,EAAE,EAAE;IACbC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,QAAQ,EAAE,QAAQ;IAClBC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE;MAAEN,KAAK,EAAE,CAAC;MAAEO,MAAM,EAAE;IAAE,CAAC;IACrCC,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDnC,cAAc,EAAE;IACdyB,KAAK,EAAE,GAAG;IACVO,MAAM,EAAE,MAAM;IACdN,SAAS,EAAE;EACb,CAAC;EACDtB,KAAK,EAAE;IACLqB,KAAK,EAAE,MAAM;IACbO,MAAM,EAAE;EACV,CAAC;EACD1B,aAAa,EAAE;IACb8B,OAAO,EAAE,EAAE;IACXC,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE;EAClB,CAAC;EACD/B,SAAS,EAAE;IACTiB,aAAa,EAAE,KAAK;IACpBc,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,YAAY;IACxBC,YAAY,EAAE;EAChB,CAAC;EACD/B,KAAK,EAAE;IACLgC,UAAU,EAAE,MAAM;IAClBC,QAAQ,EAAE,EAAE;IACZL,IAAI,EAAE;EACR,CAAC;EACDzB,OAAO,EAAE;IACPf,eAAe,EAAE,SAAS;IAC1B8C,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClBjB,YAAY,EAAE,CAAC;IACfkB,UAAU,EAAE;EACd,CAAC;EACDhC,WAAW,EAAE;IACXH,KAAK,EAAE,MAAM;IACbgC,QAAQ,EAAE,CAAC;IACXD,UAAU,EAAE;EACd,CAAC;EACD3B,WAAW,EAAE;IACX4B,QAAQ,EAAE;EACZ,CAAC;EACD1B,WAAW,EAAE;IACX8B,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,KAAK,EAAE,CAAC;IACRvB,KAAK,EAAE,EAAE;IACTO,MAAM,EAAE,EAAE;IACVL,YAAY,EAAE,EAAE;IAChB9B,eAAe,EAAE,oBAAoB;IACrC0C,UAAU,EAAE,QAAQ;IACpBD,cAAc,EAAE,QAAQ;IACxBW,MAAM,EAAE;EACV,CAAC;EACD7B,eAAe,EAAE;IACfV,KAAK,EAAE,MAAM;IACbgC,QAAQ,EAAE,EAAE;IACZD,UAAU,EAAE,MAAM;IAClBS,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { Platform } from 'react-native';
3
+ import { NativeModules, Platform } from 'react-native';
4
4
  export class AdTogether {
5
5
  allowSelfAds = true;
6
6
  baseUrl = 'https://adtogether.relaxsoftwareapps.com';
@@ -11,16 +11,71 @@ export class AdTogether {
11
11
  }
12
12
  return AdTogether.instance;
13
13
  }
14
+
15
+ /**
16
+ * Attempts to auto-detect the app's bundle/package identifier.
17
+ * Tries multiple sources in order:
18
+ * 1. expo-application (if Expo is available)
19
+ * 2. react-native-device-info (if installed)
20
+ * 3. RN's built-in PlatformConstants (Android only)
21
+ */
22
+ static tryAutoDetectBundleId() {
23
+ // 1. Try expo-application (works in Expo and bare RN with expo modules)
24
+ try {
25
+ const ExpoApplication = require('expo-application');
26
+ if (ExpoApplication?.applicationId) {
27
+ return ExpoApplication.applicationId;
28
+ }
29
+ } catch (_) {
30
+ // expo-application not available
31
+ }
32
+
33
+ // 2. Try react-native-device-info (popular community module)
34
+ try {
35
+ const DeviceInfo = require('react-native-device-info');
36
+ if (DeviceInfo?.getBundleId) {
37
+ return DeviceInfo.getBundleId();
38
+ }
39
+ } catch (_) {
40
+ // react-native-device-info not available
41
+ }
42
+
43
+ // 3. Try RN's built-in PlatformConstants (Android exposes package name)
44
+ try {
45
+ if (Platform.OS === 'android') {
46
+ const constants = NativeModules.PlatformConstants;
47
+ if (constants?.reactNativeVersion) {
48
+ // On Android, the ServerHost module sometimes exposes the package name
49
+ const appModule = NativeModules.RNDeviceInfo || NativeModules.AppInfo;
50
+ if (appModule?.bundleId) {
51
+ return appModule.bundleId;
52
+ }
53
+ }
54
+ }
55
+ } catch (_) {
56
+ // PlatformConstants not available
57
+ }
58
+ return undefined;
59
+ }
14
60
  static initialize(options) {
15
61
  const sdk = AdTogether.shared;
16
62
  sdk.appId = options.apiKey || options.appId;
63
+ if (options.bundleId) {
64
+ sdk.bundleId = options.bundleId;
65
+ } else {
66
+ // Auto-detect bundleId from available native modules
67
+ sdk.bundleId = AdTogether.tryAutoDetectBundleId();
68
+ if (!sdk.bundleId) {
69
+ console.warn('AdTogether: Could not auto-detect bundleId. ' + 'For best results, provide bundleId in initialize() options, ' + 'or install expo-application or react-native-device-info.');
70
+ }
71
+ }
17
72
  if (options.allowSelfAds !== undefined) {
18
73
  sdk.allowSelfAds = options.allowSelfAds;
19
74
  }
20
75
  if (options.baseUrl) {
21
76
  sdk.baseUrl = options.baseUrl;
22
77
  }
23
- console.log(`AdTogether SDK Initialized with App ID: ${sdk.appId}`);
78
+ console.log(`AdTogether SDK Initialized with App ID: ${sdk.appId}${sdk.bundleId ? `, Bundle ID: ${sdk.bundleId}` : ''}`);
24
79
  }
25
80
  assertInitialized() {
26
81
  if (!this.appId) {
@@ -42,9 +97,12 @@ export class AdTogether {
42
97
  if (sdk.lastAdId) {
43
98
  url += `&exclude=${sdk.lastAdId}`;
44
99
  }
100
+ if (sdk.bundleId) {
101
+ url += `&bundleId=${sdk.bundleId}`;
102
+ }
45
103
 
46
- // Pass allowSelfAds
47
- url += `&allowSelfAds=${sdk.allowSelfAds}&platform=${Platform.OS}`;
104
+ // Pass allowSelfAds (removed platform from fetch URL to match other SDKs)
105
+ url += `&allowSelfAds=${sdk.allowSelfAds}`;
48
106
  const response = await fetch(url);
49
107
  if (response.ok) {
50
108
  const ad = await response.json();
@@ -72,7 +130,13 @@ export class AdTogether {
72
130
  body: JSON.stringify({
73
131
  adId,
74
132
  token,
75
- apiKey: AdTogether.shared.appId
133
+ apiKey: AdTogether.shared.appId,
134
+ ...(AdTogether.shared.bundleId ? {
135
+ bundleId: AdTogether.shared.bundleId
136
+ } : {}),
137
+ // Send platform and environment to match Flutter SDK
138
+ platform: Platform.OS,
139
+ environment: __DEV__ ? 'development' : 'production'
76
140
  })
77
141
  }).catch(console.error);
78
142
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","AdTogether","allowSelfAds","baseUrl","constructor","shared","instance","initialize","options","sdk","appId","apiKey","undefined","console","log","assertInitialized","error","fetchAd","adUnitId","adType","Error","url","lastAdId","OS","response","fetch","ok","ad","json","id","status","err","trackImpression","adId","token","trackEvent","trackClick","endpoint","method","headers","body","JSON","stringify","catch"],"sourceRoot":"../../src","sources":["AdTogether.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","AdTogether","allowSelfAds","baseUrl","constructor","shared","instance","tryAutoDetectBundleId","ExpoApplication","require","applicationId","_","DeviceInfo","getBundleId","OS","constants","PlatformConstants","reactNativeVersion","appModule","RNDeviceInfo","AppInfo","bundleId","undefined","initialize","options","sdk","appId","apiKey","console","warn","log","assertInitialized","error","fetchAd","adUnitId","adType","Error","url","lastAdId","response","fetch","ok","ad","json","id","status","err","trackImpression","adId","token","trackEvent","trackClick","endpoint","method","headers","body","JSON","stringify","platform","environment","__DEV__","catch"],"sourceRoot":"../../src","sources":["AdTogether.ts"],"mappings":"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","ignoreList":[]}
@@ -1,19 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { useEffect, useState, useRef } from 'react';
4
- import { View, Text, Image, TouchableOpacity, StyleSheet, useColorScheme, Linking } from 'react-native';
4
+ import { View, Text, Image, TouchableOpacity, StyleSheet, useColorScheme, Linking, Pressable } from 'react-native';
5
5
  import { AdTogether } from './AdTogether';
6
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  export const AdTogetherBanner = ({
8
8
  adUnitId,
9
9
  onAdLoaded,
10
10
  onAdFailedToLoad,
11
+ showCloseButton = false,
12
+ onAdClosed,
11
13
  theme = 'auto',
12
14
  style
13
15
  }) => {
14
16
  const [adData, setAdData] = useState(null);
15
17
  const [isLoading, setIsLoading] = useState(true);
16
18
  const [hasError, setHasError] = useState(false);
19
+ const [isVisible, setIsVisible] = useState(true);
17
20
  const systemColorScheme = useColorScheme();
18
21
  const impressionTrackedRef = useRef(false);
19
22
  useEffect(() => {
@@ -51,6 +54,13 @@ export const AdTogetherBanner = ({
51
54
  Linking.openURL(adData.clickUrl).catch(console.error);
52
55
  }
53
56
  };
57
+ const handleClose = () => {
58
+ setIsVisible(false);
59
+ onAdClosed?.();
60
+ };
61
+ if (!isVisible) {
62
+ return null;
63
+ }
54
64
  if (isLoading) {
55
65
  return /*#__PURE__*/_jsx(View, {
56
66
  style: [styles.container, style]
@@ -104,6 +114,16 @@ export const AdTogetherBanner = ({
104
114
  numberOfLines: 2,
105
115
  children: adData.description
106
116
  })]
117
+ }), showCloseButton && /*#__PURE__*/_jsx(Pressable, {
118
+ onPress: handleClose,
119
+ style: styles.closeButton,
120
+ hitSlop: 8,
121
+ accessibilityLabel: "Close ad",
122
+ accessibilityRole: "button",
123
+ children: /*#__PURE__*/_jsx(Text, {
124
+ style: styles.closeButtonText,
125
+ children: "\xD7"
126
+ })
107
127
  })]
108
128
  });
109
129
  };
@@ -163,6 +183,24 @@ const styles = StyleSheet.create({
163
183
  },
164
184
  description: {
165
185
  fontSize: 12
186
+ },
187
+ closeButton: {
188
+ position: 'absolute',
189
+ top: 8,
190
+ right: 8,
191
+ width: 24,
192
+ height: 24,
193
+ borderRadius: 12,
194
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
195
+ alignItems: 'center',
196
+ justifyContent: 'center',
197
+ zIndex: 1
198
+ },
199
+ closeButtonText: {
200
+ color: '#fff',
201
+ fontSize: 16,
202
+ fontWeight: 'bold',
203
+ lineHeight: 18
166
204
  }
167
205
  });
168
206
  //# sourceMappingURL=AdTogetherBanner.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","useRef","View","Text","Image","TouchableOpacity","StyleSheet","useColorScheme","Linking","AdTogether","jsx","_jsx","jsxs","_jsxs","AdTogetherBanner","adUnitId","onAdLoaded","onAdFailedToLoad","theme","style","adData","setAdData","isLoading","setIsLoading","hasError","setHasError","systemColorScheme","impressionTrackedRef","isMounted","fetchAd","then","ad","catch","err","console","error","current","trackImpression","id","token","handlePress","trackClick","clickUrl","openURL","styles","container","isDarkMode","bgColor","borderColor","textColor","descColor","activeOpacity","onPress","backgroundColor","children","imageUrl","imageContainer","source","uri","image","resizeMode","textContainer","headerRow","title","color","numberOfLines","adBadge","adBadgeText","description","create","flexDirection","width","minHeight","borderRadius","borderWidth","overflow","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","elevation","padding","flex","justifyContent","alignItems","marginBottom","fontWeight","fontSize","paddingHorizontal","paddingVertical","marginLeft"],"sourceRoot":"../../src","sources":["AdTogetherBanner.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","useRef","View","Text","Image","TouchableOpacity","StyleSheet","useColorScheme","Linking","Pressable","AdTogether","jsx","_jsx","jsxs","_jsxs","AdTogetherBanner","adUnitId","onAdLoaded","onAdFailedToLoad","showCloseButton","onAdClosed","theme","style","adData","setAdData","isLoading","setIsLoading","hasError","setHasError","isVisible","setIsVisible","systemColorScheme","impressionTrackedRef","isMounted","fetchAd","then","ad","catch","err","console","error","current","trackImpression","id","token","handlePress","trackClick","clickUrl","openURL","handleClose","styles","container","isDarkMode","bgColor","borderColor","textColor","descColor","activeOpacity","onPress","backgroundColor","children","imageUrl","imageContainer","source","uri","image","resizeMode","textContainer","headerRow","title","color","numberOfLines","adBadge","adBadgeText","description","closeButton","hitSlop","accessibilityLabel","accessibilityRole","closeButtonText","create","flexDirection","width","minHeight","borderRadius","borderWidth","overflow","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","elevation","padding","flex","justifyContent","alignItems","marginBottom","fontWeight","fontSize","paddingHorizontal","paddingVertical","marginLeft","position","top","right","zIndex","lineHeight"],"sourceRoot":"../../src","sources":["AdTogetherBanner.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,10 +2,19 @@ import { AdModel, AdType, AdTogetherOptions } from './types';
2
2
  export declare class AdTogether {
3
3
  private static instance;
4
4
  private appId?;
5
+ private bundleId?;
5
6
  private allowSelfAds;
6
7
  baseUrl: string;
7
8
  private constructor();
8
9
  static get shared(): AdTogether;
10
+ /**
11
+ * Attempts to auto-detect the app's bundle/package identifier.
12
+ * Tries multiple sources in order:
13
+ * 1. expo-application (if Expo is available)
14
+ * 2. react-native-device-info (if installed)
15
+ * 3. RN's built-in PlatformConstants (Android only)
16
+ */
17
+ private static tryAutoDetectBundleId;
9
18
  static initialize(options: AdTogetherOptions): void;
10
19
  assertInitialized(): boolean;
11
20
  private lastAdId?;
@@ -1 +1 @@
1
- {"version":3,"file":"AdTogether.d.ts","sourceRoot":"","sources":["../../src/AdTogether.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG7D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,YAAY,CAAiB;IAC9B,OAAO,EAAE,MAAM,CAA8C;IAEpE,OAAO;IAEP,MAAM,KAAK,MAAM,IAAI,UAAU,CAK9B;IAED,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB;IAe5C,iBAAiB;IAQjB,OAAO,CAAC,QAAQ,CAAC,CAAS;WAEb,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BzE,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAInD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAI9C,OAAO,CAAC,MAAM,CAAC,UAAU;CAe1B"}
1
+ {"version":3,"file":"AdTogether.d.ts","sourceRoot":"","sources":["../../src/AdTogether.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG7D,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAiB;IAC9B,OAAO,EAAE,MAAM,CAA8C;IAEpE,OAAO;IAEP,MAAM,KAAK,MAAM,IAAI,UAAU,CAK9B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAwCpC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,iBAAiB;IA6B5C,iBAAiB;IAQjB,OAAO,CAAC,QAAQ,CAAC,CAAS;WAEb,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCzE,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAInD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAI9C,OAAO,CAAC,MAAM,CAAC,UAAU;CAmB1B"}
@@ -3,6 +3,10 @@ export interface AdTogetherBannerProps {
3
3
  adUnitId: string;
4
4
  onAdLoaded?: () => void;
5
5
  onAdFailedToLoad?: (error: Error) => void;
6
+ /** Whether to show a close button on the banner */
7
+ showCloseButton?: boolean;
8
+ /** Callback when the user closes the ad */
9
+ onAdClosed?: () => void;
6
10
  /** Pass 'dark' to use dark mode, 'light' for light mode, or 'auto' (default) to respect system preference */
7
11
  theme?: 'dark' | 'light' | 'auto';
8
12
  style?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"AdTogetherBanner.d.ts","sourceRoot":"","sources":["../../src/AdTogetherBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,6GAA6G;IAC7G,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAwG5D,CAAC"}
1
+ {"version":3,"file":"AdTogetherBanner.d.ts","sourceRoot":"","sources":["../../src/AdTogetherBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,mDAAmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,6GAA6G;IAC7G,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+H5D,CAAC"}
@@ -12,6 +12,7 @@ export interface AdTogetherOptions {
12
12
  appId?: string;
13
13
  apiKey?: string;
14
14
  baseUrl?: string;
15
+ bundleId?: string;
15
16
  /** Whether to show your own ads as fallback if no external ads are available. Defaults to true. */
16
17
  allowSelfAds?: boolean;
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adtogether/react-native-sdk",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "The official AdTogether React Native SDK — reciprocal ad exchange to increase conversions and grow your audience.",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/AdTogether.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { AdModel, AdType, AdTogetherOptions } from './types';
2
- import { Platform } from 'react-native';
2
+ import { NativeModules, Platform } from 'react-native';
3
3
 
4
4
  export class AdTogether {
5
5
  private static instance: AdTogether;
6
6
  private appId?: string;
7
+ private bundleId?: string;
7
8
  private allowSelfAds: boolean = true;
8
9
  public baseUrl: string = 'https://adtogether.relaxsoftwareapps.com';
9
10
 
@@ -16,10 +17,71 @@ export class AdTogether {
16
17
  return AdTogether.instance;
17
18
  }
18
19
 
20
+ /**
21
+ * Attempts to auto-detect the app's bundle/package identifier.
22
+ * Tries multiple sources in order:
23
+ * 1. expo-application (if Expo is available)
24
+ * 2. react-native-device-info (if installed)
25
+ * 3. RN's built-in PlatformConstants (Android only)
26
+ */
27
+ private static tryAutoDetectBundleId(): string | undefined {
28
+ // 1. Try expo-application (works in Expo and bare RN with expo modules)
29
+ try {
30
+ const ExpoApplication = require('expo-application');
31
+ if (ExpoApplication?.applicationId) {
32
+ return ExpoApplication.applicationId;
33
+ }
34
+ } catch (_) {
35
+ // expo-application not available
36
+ }
37
+
38
+ // 2. Try react-native-device-info (popular community module)
39
+ try {
40
+ const DeviceInfo = require('react-native-device-info');
41
+ if (DeviceInfo?.getBundleId) {
42
+ return DeviceInfo.getBundleId();
43
+ }
44
+ } catch (_) {
45
+ // react-native-device-info not available
46
+ }
47
+
48
+ // 3. Try RN's built-in PlatformConstants (Android exposes package name)
49
+ try {
50
+ if (Platform.OS === 'android') {
51
+ const constants = NativeModules.PlatformConstants;
52
+ if (constants?.reactNativeVersion) {
53
+ // On Android, the ServerHost module sometimes exposes the package name
54
+ const appModule = NativeModules.RNDeviceInfo || NativeModules.AppInfo;
55
+ if (appModule?.bundleId) {
56
+ return appModule.bundleId;
57
+ }
58
+ }
59
+ }
60
+ } catch (_) {
61
+ // PlatformConstants not available
62
+ }
63
+
64
+ return undefined;
65
+ }
66
+
19
67
  static initialize(options: AdTogetherOptions) {
20
68
  const sdk = AdTogether.shared;
21
69
  sdk.appId = options.apiKey || options.appId;
22
70
 
71
+ if (options.bundleId) {
72
+ sdk.bundleId = options.bundleId;
73
+ } else {
74
+ // Auto-detect bundleId from available native modules
75
+ sdk.bundleId = AdTogether.tryAutoDetectBundleId();
76
+ if (!sdk.bundleId) {
77
+ console.warn(
78
+ 'AdTogether: Could not auto-detect bundleId. ' +
79
+ 'For best results, provide bundleId in initialize() options, ' +
80
+ 'or install expo-application or react-native-device-info.'
81
+ );
82
+ }
83
+ }
84
+
23
85
  if (options.allowSelfAds !== undefined) {
24
86
  sdk.allowSelfAds = options.allowSelfAds;
25
87
  }
@@ -28,7 +90,7 @@ export class AdTogether {
28
90
  sdk.baseUrl = options.baseUrl;
29
91
  }
30
92
 
31
- console.log(`AdTogether SDK Initialized with App ID: ${sdk.appId}`);
93
+ console.log(`AdTogether SDK Initialized with App ID: ${sdk.appId}${sdk.bundleId ? `, Bundle ID: ${sdk.bundleId}` : ''}`);
32
94
  }
33
95
 
34
96
  assertInitialized() {
@@ -55,9 +117,12 @@ export class AdTogether {
55
117
  if (sdk.lastAdId) {
56
118
  url += `&exclude=${sdk.lastAdId}`;
57
119
  }
120
+ if (sdk.bundleId) {
121
+ url += `&bundleId=${sdk.bundleId}`;
122
+ }
58
123
 
59
- // Pass allowSelfAds
60
- url += `&allowSelfAds=${sdk.allowSelfAds}&platform=${Platform.OS}`;
124
+ // Pass allowSelfAds (removed platform from fetch URL to match other SDKs)
125
+ url += `&allowSelfAds=${sdk.allowSelfAds}`;
61
126
 
62
127
  const response = await fetch(url);
63
128
  if (response.ok) {
@@ -91,7 +156,11 @@ export class AdTogether {
91
156
  body: JSON.stringify({
92
157
  adId,
93
158
  token,
94
- apiKey: AdTogether.shared.appId
159
+ apiKey: AdTogether.shared.appId,
160
+ ...(AdTogether.shared.bundleId ? { bundleId: AdTogether.shared.bundleId } : {}),
161
+ // Send platform and environment to match Flutter SDK
162
+ platform: Platform.OS,
163
+ environment: __DEV__ ? 'development' : 'production',
95
164
  }),
96
165
  }).catch(console.error);
97
166
  }
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState, useRef } from 'react';
2
- import { View, Text, Image, TouchableOpacity, StyleSheet, useColorScheme, Linking } from 'react-native';
2
+ import { View, Text, Image, TouchableOpacity, StyleSheet, useColorScheme, Linking, Pressable } from 'react-native';
3
3
  import { AdTogether } from './AdTogether';
4
4
  import { AdModel } from './types';
5
5
 
@@ -7,6 +7,10 @@ export interface AdTogetherBannerProps {
7
7
  adUnitId: string;
8
8
  onAdLoaded?: () => void;
9
9
  onAdFailedToLoad?: (error: Error) => void;
10
+ /** Whether to show a close button on the banner */
11
+ showCloseButton?: boolean;
12
+ /** Callback when the user closes the ad */
13
+ onAdClosed?: () => void;
10
14
  /** Pass 'dark' to use dark mode, 'light' for light mode, or 'auto' (default) to respect system preference */
11
15
  theme?: 'dark' | 'light' | 'auto';
12
16
  style?: any;
@@ -16,12 +20,15 @@ export const AdTogetherBanner: React.FC<AdTogetherBannerProps> = ({
16
20
  adUnitId,
17
21
  onAdLoaded,
18
22
  onAdFailedToLoad,
23
+ showCloseButton = false,
24
+ onAdClosed,
19
25
  theme = 'auto',
20
26
  style,
21
27
  }) => {
22
28
  const [adData, setAdData] = useState<AdModel | null>(null);
23
29
  const [isLoading, setIsLoading] = useState(true);
24
30
  const [hasError, setHasError] = useState(false);
31
+ const [isVisible, setIsVisible] = useState(true);
25
32
  const systemColorScheme = useColorScheme();
26
33
 
27
34
  const impressionTrackedRef = useRef(false);
@@ -67,6 +74,15 @@ export const AdTogetherBanner: React.FC<AdTogetherBannerProps> = ({
67
74
  }
68
75
  };
69
76
 
77
+ const handleClose = () => {
78
+ setIsVisible(false);
79
+ onAdClosed?.();
80
+ };
81
+
82
+ if (!isVisible) {
83
+ return null;
84
+ }
85
+
70
86
  if (isLoading) {
71
87
  return <View style={[styles.container, style]} />;
72
88
  }
@@ -114,6 +130,17 @@ export const AdTogetherBanner: React.FC<AdTogetherBannerProps> = ({
114
130
  {adData.description}
115
131
  </Text>
116
132
  </View>
133
+ {showCloseButton && (
134
+ <Pressable
135
+ onPress={handleClose}
136
+ style={styles.closeButton}
137
+ hitSlop={8}
138
+ accessibilityLabel="Close ad"
139
+ accessibilityRole="button"
140
+ >
141
+ <Text style={styles.closeButtonText}>×</Text>
142
+ </Pressable>
143
+ )}
117
144
  </TouchableOpacity>
118
145
  );
119
146
  };
@@ -172,4 +199,22 @@ const styles = StyleSheet.create({
172
199
  description: {
173
200
  fontSize: 12,
174
201
  },
202
+ closeButton: {
203
+ position: 'absolute',
204
+ top: 8,
205
+ right: 8,
206
+ width: 24,
207
+ height: 24,
208
+ borderRadius: 12,
209
+ backgroundColor: 'rgba(0, 0, 0, 0.4)',
210
+ alignItems: 'center',
211
+ justifyContent: 'center',
212
+ zIndex: 1,
213
+ },
214
+ closeButtonText: {
215
+ color: '#fff',
216
+ fontSize: 16,
217
+ fontWeight: 'bold',
218
+ lineHeight: 18,
219
+ },
175
220
  });
package/src/types.ts CHANGED
@@ -14,6 +14,7 @@ export interface AdTogetherOptions {
14
14
  appId?: string;
15
15
  apiKey?: string;
16
16
  baseUrl?: string;
17
+ bundleId?: string;
17
18
  /** Whether to show your own ads as fallback if no external ads are available. Defaults to true. */
18
19
  allowSelfAds?: boolean;
19
20
  }