@adtogether/react-native-sdk 0.1.22 → 0.1.24
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 +7 -1
- package/README.md +9 -0
- package/lib/commonjs/AdTogether.js +62 -1
- package/lib/commonjs/AdTogether.js.map +1 -1
- package/lib/module/AdTogether.js +62 -1
- package/lib/module/AdTogether.js.map +1 -1
- package/lib/typescript/AdTogether.d.ts +5 -0
- package/lib/typescript/AdTogether.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/AdTogether.ts +62 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
## 0.1.
|
|
1
|
+
## 0.1.24
|
|
2
|
+
* **Docs**: Standardized SDK documentation across all platforms.
|
|
3
|
+
|
|
4
|
+
## 0.1.23
|
|
2
5
|
|
|
6
|
+
* **Sync**: Version parity across all AdTogether SDKs.
|
|
7
|
+
|
|
8
|
+
## 0.1.22
|
|
3
9
|
* **Brand**: Added "Powered by AdTogether" attribution to all Interstitial ad formats.
|
|
4
10
|
* **Sync**: Unified versioning (0.1.20) across all AdTogether SDKs.
|
|
5
11
|
|
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# AdTogether React Native SDK
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
<p align="center">
|
|
5
|
+
<img src="../../public/dashboard.png" width="800" alt="Developer Dashboard">
|
|
6
|
+
</p>
|
|
7
|
+
|
|
3
8
|
[](https://www.npmjs.com/package/@adtogether/react-native-sdk)
|
|
4
9
|
[](https://opensource.org/licenses/MIT)
|
|
5
10
|
|
|
@@ -10,10 +15,14 @@
|
|
|
10
15
|
|
|
11
16
|
---
|
|
12
17
|
|
|
18
|
+
|
|
13
19
|
**AdTogether** is an ad exchange platform designed to empower developers and creators. By participating in our network, you can engage in reciprocal marketing for your own applications while simultaneously driving traffic to your products and helping you **increase conversions**. Our core philosophy is simple: **"Show an ad, get an ad shown"**.
|
|
14
20
|
|
|
15
21
|
This SDK allows React Native developers to easily integrate AdTogether ads into their applications. By displaying ads from other community members, you earn **Ad Credits** that allow your own app's ads to be shown across the AdTogether network.
|
|
16
22
|
|
|
23
|
+
> [!IMPORTANT]
|
|
24
|
+
> **Developer Account Required**: Before integrating the SDK, you must create a developer account at [https://adtogether.relaxsoftwareapps.com](https://adtogether.relaxsoftwareapps.com) to generate your `appId` and configure your ad units. Integration will not work without a valid `appId`.
|
|
25
|
+
|
|
17
26
|
### 🖼️ Visualizing the Experience
|
|
18
27
|
|
|
19
28
|
| **Native Banner Ad** | **Interstitial Full-Screen** |
|
|
@@ -124,6 +124,66 @@ class AdTogether {
|
|
|
124
124
|
static trackClick(adId, token) {
|
|
125
125
|
this.trackEvent('/api/ads/click', adId, token);
|
|
126
126
|
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Detect country code from the device locale.
|
|
130
|
+
* Tries expo-localization first, then NativeModules, then Intl API.
|
|
131
|
+
*/
|
|
132
|
+
static detectCountry() {
|
|
133
|
+
// 1. Try expo-localization
|
|
134
|
+
try {
|
|
135
|
+
const ExpoLocalization = require('expo-localization');
|
|
136
|
+
if (ExpoLocalization?.region) {
|
|
137
|
+
return ExpoLocalization.region; // e.g. "US"
|
|
138
|
+
}
|
|
139
|
+
// expo-localization v3+ uses getLocales()
|
|
140
|
+
if (ExpoLocalization?.getLocales) {
|
|
141
|
+
const locales = ExpoLocalization.getLocales();
|
|
142
|
+
if (locales?.[0]?.regionCode) {
|
|
143
|
+
return locales[0].regionCode;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
} catch (_) {}
|
|
147
|
+
|
|
148
|
+
// 2. Try RN NativeModules (I18nManager or SettingsManager)
|
|
149
|
+
try {
|
|
150
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
151
|
+
const settings = _reactNative.NativeModules.SettingsManager?.settings;
|
|
152
|
+
const locale = settings?.AppleLocale || settings?.AppleLanguages?.[0];
|
|
153
|
+
if (locale) {
|
|
154
|
+
const parts = locale.replace('_', '-').split('-');
|
|
155
|
+
if (parts.length >= 2) {
|
|
156
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
157
|
+
if (region.length === 2) return region;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
} else if (_reactNative.Platform.OS === 'android') {
|
|
161
|
+
const locale = _reactNative.NativeModules.I18nManager?.localeIdentifier;
|
|
162
|
+
if (locale) {
|
|
163
|
+
const parts = locale.replace('_', '-').split('-');
|
|
164
|
+
if (parts.length >= 2) {
|
|
165
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
166
|
+
if (region.length === 2) return region;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
} catch (_) {}
|
|
171
|
+
|
|
172
|
+
// 3. Fallback: Intl API (available in Hermes & JSC)
|
|
173
|
+
try {
|
|
174
|
+
if (typeof Intl !== 'undefined' && Intl.DateTimeFormat) {
|
|
175
|
+
const resolved = Intl.DateTimeFormat().resolvedOptions();
|
|
176
|
+
if (resolved.locale) {
|
|
177
|
+
const parts = resolved.locale.split('-');
|
|
178
|
+
if (parts.length >= 2) {
|
|
179
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
180
|
+
if (region.length === 2) return region;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
} catch (_) {}
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
127
187
|
static trackEvent(endpoint, adId, token) {
|
|
128
188
|
if (!AdTogether.shared.assertInitialized()) return;
|
|
129
189
|
fetch(`${AdTogether.shared.baseUrl}${endpoint}`, {
|
|
@@ -140,7 +200,8 @@ class AdTogether {
|
|
|
140
200
|
} : {}),
|
|
141
201
|
// Send platform and environment to match Flutter SDK
|
|
142
202
|
platform: _reactNative.Platform.OS,
|
|
143
|
-
environment: __DEV__ ? 'development' : 'production'
|
|
203
|
+
environment: __DEV__ ? 'development' : 'production',
|
|
204
|
+
country: AdTogether.detectCountry()
|
|
144
205
|
})
|
|
145
206
|
}).catch(console.error);
|
|
146
207
|
}
|
|
@@ -1 +1 @@
|
|
|
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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
|
|
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","detectCountry","ExpoLocalization","region","getLocales","locales","regionCode","settings","SettingsManager","locale","AppleLocale","AppleLanguages","parts","replace","split","length","toUpperCase","I18nManager","localeIdentifier","Intl","DateTimeFormat","resolved","resolvedOptions","endpoint","method","headers","body","JSON","stringify","platform","environment","__DEV__","country","catch","exports"],"sourceRoot":"../../src","sources":["AdTogether.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/AdTogether.js
CHANGED
|
@@ -120,6 +120,66 @@ export class AdTogether {
|
|
|
120
120
|
static trackClick(adId, token) {
|
|
121
121
|
this.trackEvent('/api/ads/click', adId, token);
|
|
122
122
|
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Detect country code from the device locale.
|
|
126
|
+
* Tries expo-localization first, then NativeModules, then Intl API.
|
|
127
|
+
*/
|
|
128
|
+
static detectCountry() {
|
|
129
|
+
// 1. Try expo-localization
|
|
130
|
+
try {
|
|
131
|
+
const ExpoLocalization = require('expo-localization');
|
|
132
|
+
if (ExpoLocalization?.region) {
|
|
133
|
+
return ExpoLocalization.region; // e.g. "US"
|
|
134
|
+
}
|
|
135
|
+
// expo-localization v3+ uses getLocales()
|
|
136
|
+
if (ExpoLocalization?.getLocales) {
|
|
137
|
+
const locales = ExpoLocalization.getLocales();
|
|
138
|
+
if (locales?.[0]?.regionCode) {
|
|
139
|
+
return locales[0].regionCode;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
} catch (_) {}
|
|
143
|
+
|
|
144
|
+
// 2. Try RN NativeModules (I18nManager or SettingsManager)
|
|
145
|
+
try {
|
|
146
|
+
if (Platform.OS === 'ios') {
|
|
147
|
+
const settings = NativeModules.SettingsManager?.settings;
|
|
148
|
+
const locale = settings?.AppleLocale || settings?.AppleLanguages?.[0];
|
|
149
|
+
if (locale) {
|
|
150
|
+
const parts = locale.replace('_', '-').split('-');
|
|
151
|
+
if (parts.length >= 2) {
|
|
152
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
153
|
+
if (region.length === 2) return region;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
} else if (Platform.OS === 'android') {
|
|
157
|
+
const locale = NativeModules.I18nManager?.localeIdentifier;
|
|
158
|
+
if (locale) {
|
|
159
|
+
const parts = locale.replace('_', '-').split('-');
|
|
160
|
+
if (parts.length >= 2) {
|
|
161
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
162
|
+
if (region.length === 2) return region;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} catch (_) {}
|
|
167
|
+
|
|
168
|
+
// 3. Fallback: Intl API (available in Hermes & JSC)
|
|
169
|
+
try {
|
|
170
|
+
if (typeof Intl !== 'undefined' && Intl.DateTimeFormat) {
|
|
171
|
+
const resolved = Intl.DateTimeFormat().resolvedOptions();
|
|
172
|
+
if (resolved.locale) {
|
|
173
|
+
const parts = resolved.locale.split('-');
|
|
174
|
+
if (parts.length >= 2) {
|
|
175
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
176
|
+
if (region.length === 2) return region;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
} catch (_) {}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
123
183
|
static trackEvent(endpoint, adId, token) {
|
|
124
184
|
if (!AdTogether.shared.assertInitialized()) return;
|
|
125
185
|
fetch(`${AdTogether.shared.baseUrl}${endpoint}`, {
|
|
@@ -136,7 +196,8 @@ export class AdTogether {
|
|
|
136
196
|
} : {}),
|
|
137
197
|
// Send platform and environment to match Flutter SDK
|
|
138
198
|
platform: Platform.OS,
|
|
139
|
-
environment: __DEV__ ? 'development' : 'production'
|
|
199
|
+
environment: __DEV__ ? 'development' : 'production',
|
|
200
|
+
country: AdTogether.detectCountry()
|
|
140
201
|
})
|
|
141
202
|
}).catch(console.error);
|
|
142
203
|
}
|
|
@@ -1 +1 @@
|
|
|
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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
|
|
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","detectCountry","ExpoLocalization","region","getLocales","locales","regionCode","settings","SettingsManager","locale","AppleLocale","AppleLanguages","parts","replace","split","length","toUpperCase","I18nManager","localeIdentifier","Intl","DateTimeFormat","resolved","resolvedOptions","endpoint","method","headers","body","JSON","stringify","platform","environment","__DEV__","country","catch"],"sourceRoot":"../../src","sources":["AdTogether.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,6 +21,11 @@ export declare class AdTogether {
|
|
|
21
21
|
static fetchAd(adUnitId: string, adType?: AdType): Promise<AdModel>;
|
|
22
22
|
static trackImpression(adId: string, token?: string): void;
|
|
23
23
|
static trackClick(adId: string, token?: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Detect country code from the device locale.
|
|
26
|
+
* Tries expo-localization first, then NativeModules, then Intl API.
|
|
27
|
+
*/
|
|
28
|
+
private static detectCountry;
|
|
24
29
|
private static trackEvent;
|
|
25
30
|
}
|
|
26
31
|
//# sourceMappingURL=AdTogether.d.ts.map
|
|
@@ -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,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;
|
|
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;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAyD5B,OAAO,CAAC,MAAM,CAAC,UAAU;CAoB1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adtogether/react-native-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.24",
|
|
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
|
@@ -145,6 +145,67 @@ export class AdTogether {
|
|
|
145
145
|
this.trackEvent('/api/ads/click', adId, token);
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Detect country code from the device locale.
|
|
150
|
+
* Tries expo-localization first, then NativeModules, then Intl API.
|
|
151
|
+
*/
|
|
152
|
+
private static detectCountry(): string | null {
|
|
153
|
+
// 1. Try expo-localization
|
|
154
|
+
try {
|
|
155
|
+
const ExpoLocalization = require('expo-localization');
|
|
156
|
+
if (ExpoLocalization?.region) {
|
|
157
|
+
return ExpoLocalization.region; // e.g. "US"
|
|
158
|
+
}
|
|
159
|
+
// expo-localization v3+ uses getLocales()
|
|
160
|
+
if (ExpoLocalization?.getLocales) {
|
|
161
|
+
const locales = ExpoLocalization.getLocales();
|
|
162
|
+
if (locales?.[0]?.regionCode) {
|
|
163
|
+
return locales[0].regionCode;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} catch (_) {}
|
|
167
|
+
|
|
168
|
+
// 2. Try RN NativeModules (I18nManager or SettingsManager)
|
|
169
|
+
try {
|
|
170
|
+
if (Platform.OS === 'ios') {
|
|
171
|
+
const settings = NativeModules.SettingsManager?.settings;
|
|
172
|
+
const locale = settings?.AppleLocale || settings?.AppleLanguages?.[0];
|
|
173
|
+
if (locale) {
|
|
174
|
+
const parts = locale.replace('_', '-').split('-');
|
|
175
|
+
if (parts.length >= 2) {
|
|
176
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
177
|
+
if (region.length === 2) return region;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
} else if (Platform.OS === 'android') {
|
|
181
|
+
const locale = NativeModules.I18nManager?.localeIdentifier;
|
|
182
|
+
if (locale) {
|
|
183
|
+
const parts = locale.replace('_', '-').split('-');
|
|
184
|
+
if (parts.length >= 2) {
|
|
185
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
186
|
+
if (region.length === 2) return region;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
} catch (_) {}
|
|
191
|
+
|
|
192
|
+
// 3. Fallback: Intl API (available in Hermes & JSC)
|
|
193
|
+
try {
|
|
194
|
+
if (typeof Intl !== 'undefined' && Intl.DateTimeFormat) {
|
|
195
|
+
const resolved = Intl.DateTimeFormat().resolvedOptions();
|
|
196
|
+
if (resolved.locale) {
|
|
197
|
+
const parts = resolved.locale.split('-');
|
|
198
|
+
if (parts.length >= 2) {
|
|
199
|
+
const region = parts[parts.length - 1].toUpperCase();
|
|
200
|
+
if (region.length === 2) return region;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
} catch (_) {}
|
|
205
|
+
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
|
|
148
209
|
private static trackEvent(endpoint: string, adId: string, token?: string) {
|
|
149
210
|
if (!AdTogether.shared.assertInitialized()) return;
|
|
150
211
|
|
|
@@ -161,6 +222,7 @@ export class AdTogether {
|
|
|
161
222
|
// Send platform and environment to match Flutter SDK
|
|
162
223
|
platform: Platform.OS,
|
|
163
224
|
environment: __DEV__ ? 'development' : 'production',
|
|
225
|
+
country: AdTogether.detectCountry(),
|
|
164
226
|
}),
|
|
165
227
|
}).catch(console.error);
|
|
166
228
|
}
|