@thealteroffice/react-native-adgeist 0.0.6 → 0.0.8
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/Adgeist.podspec +1 -1
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/adgeist/implementation/AdgeistModuleImpl.kt +20 -8
- package/android/src/newarch/java/com/AdgeistModule.kt +4 -0
- package/android/src/oldarch/java/com/AdgeistModule.kt +5 -0
- package/ios/Adgeist.mm +8 -0
- package/ios/AdgeistImpl.swift +31 -3
- package/lib/module/NativeAdgeist.js.map +1 -1
- package/lib/module/components/AdgeistProvider.js +20 -3
- package/lib/module/components/AdgeistProvider.js.map +1 -1
- package/lib/module/components/BannerAd.js +24 -10
- package/lib/module/components/BannerAd.js.map +1 -1
- package/lib/typescript/src/NativeAdgeist.d.ts +1 -0
- package/lib/typescript/src/NativeAdgeist.d.ts.map +1 -1
- package/lib/typescript/src/components/AdgeistProvider.d.ts +2 -0
- package/lib/typescript/src/components/AdgeistProvider.d.ts.map +1 -1
- package/lib/typescript/src/components/BannerAd.d.ts +1 -0
- package/lib/typescript/src/components/BannerAd.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/NativeAdgeist.ts +1 -0
- package/src/components/AdgeistProvider.tsx +23 -2
- package/src/components/BannerAd.tsx +49 -27
package/Adgeist.podspec
CHANGED
|
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
|
|
|
16
16
|
s.source_files = "ios/**/*.{h,m,mm,cpp,swift}"
|
|
17
17
|
s.private_header_files = "ios/**/*.h"
|
|
18
18
|
|
|
19
|
-
s.dependency "AdgeistKit", '= 0.0.
|
|
19
|
+
s.dependency "AdgeistKit", '= 0.0.4'
|
|
20
20
|
|
|
21
21
|
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
|
22
22
|
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
|
package/android/build.gradle
CHANGED
|
@@ -101,7 +101,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
|
101
101
|
|
|
102
102
|
dependencies {
|
|
103
103
|
implementation "com.facebook.react:react-android"
|
|
104
|
-
implementation "ai.adgeist:adgeistkit:0.0.
|
|
104
|
+
implementation "ai.adgeist:adgeistkit:0.0.7"
|
|
105
105
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -5,6 +5,8 @@ import com.facebook.react.bridge.ReactApplicationContext
|
|
|
5
5
|
import com.facebook.react.bridge.Arguments
|
|
6
6
|
import com.facebook.react.bridge.WritableMap
|
|
7
7
|
import com.adgeistkit.AdgeistCore
|
|
8
|
+
import com.adgeistkit.FetchCreative
|
|
9
|
+
import com.adgeistkit.CreativeAnalytics
|
|
8
10
|
import com.adgeistkit.CreativeDataModel
|
|
9
11
|
import com.adgeistkit.BidResponseData
|
|
10
12
|
import com.adgeistkit.SeatBid
|
|
@@ -14,33 +16,43 @@ import com.adgeistkit.BidExtension
|
|
|
14
16
|
|
|
15
17
|
class AdgeistModuleImpl internal constructor(private val context: ReactApplicationContext) {
|
|
16
18
|
|
|
17
|
-
private
|
|
18
|
-
private
|
|
19
|
-
private
|
|
19
|
+
private var adgeistInstance: AdgeistCore? = null
|
|
20
|
+
private var getAd: FetchCreative? = null
|
|
21
|
+
private var postCreativeAnalytic: CreativeAnalytics? = null
|
|
22
|
+
|
|
23
|
+
fun initializeSdk(customDomain: String?, promise: Promise) {
|
|
24
|
+
try {
|
|
25
|
+
adgeistInstance = AdgeistCore.initialize(context.applicationContext, customDomain)
|
|
26
|
+
getAd = adgeistInstance?.getCreative()
|
|
27
|
+
postCreativeAnalytic = adgeistInstance?.postCreativeAnalytics()
|
|
28
|
+
promise.resolve("SDK initialized with domain: ${customDomain ?: "default"}")
|
|
29
|
+
} catch (e: Exception) {
|
|
30
|
+
promise.reject("INIT_FAILED", "SDK initialization failed", e)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
20
33
|
|
|
21
34
|
fun fetchCreative(apiKey: String, origin: String, adSpaceId: String, publisherId: String, isTestEnvironment: Boolean, promise: Promise) {
|
|
22
|
-
getAd
|
|
35
|
+
getAd?.fetchCreative(apiKey, origin, adSpaceId, publisherId, isTestEnvironment) { adData ->
|
|
23
36
|
if (adData != null) {
|
|
24
37
|
promise.resolve(adData.toWritableMap())
|
|
25
38
|
} else {
|
|
26
39
|
promise.reject("NO_AD", "Ad data not available")
|
|
27
40
|
}
|
|
28
|
-
}
|
|
41
|
+
} ?: promise.reject("NOT_INITIALIZED", "SDK not initialized")
|
|
29
42
|
}
|
|
30
43
|
|
|
31
44
|
fun sendCreativeAnalytic(campaignId: String, adSpaceId: String, publisherId: String, eventType: String, origin: String, apiKey: String, bidId: String, isTestEnvironment: Boolean = true, promise: Promise) {
|
|
32
|
-
postCreativeAnalytic
|
|
45
|
+
postCreativeAnalytic?.sendTrackingData(campaignId, adSpaceId, publisherId, eventType, origin, apiKey, bidId, isTestEnvironment) { adData ->
|
|
33
46
|
if (adData != null) {
|
|
34
47
|
promise.resolve(adData)
|
|
35
48
|
} else {
|
|
36
49
|
promise.reject("NO_AD", "Couldn't find the campaign to update analytics")
|
|
37
50
|
}
|
|
38
|
-
}
|
|
51
|
+
} ?: promise.reject("NOT_INITIALIZED", "SDK not initialized")
|
|
39
52
|
}
|
|
40
53
|
|
|
41
54
|
companion object {
|
|
42
55
|
const val NAME = "Adgeist"
|
|
43
|
-
|
|
44
56
|
}
|
|
45
57
|
}
|
|
46
58
|
|
|
@@ -11,6 +11,10 @@ class AdgeistModule internal constructor(reactContext: ReactApplicationContext)
|
|
|
11
11
|
|
|
12
12
|
override fun getName(): String = AdgeistModuleImpl.NAME
|
|
13
13
|
|
|
14
|
+
override fun initializeSdk(customDomain: String, promise: Promise) {
|
|
15
|
+
implementation.initializeSdk(customDomain, promise)
|
|
16
|
+
}
|
|
17
|
+
|
|
14
18
|
override fun fetchCreative(apiKey: String, origin: String, adSpaceId: String, publisherId: String, isTestEnvironment: Boolean, promise: Promise) {
|
|
15
19
|
implementation.fetchCreative(apiKey, origin, adSpaceId, publisherId, isTestEnvironment, promise)
|
|
16
20
|
}
|
|
@@ -13,6 +13,11 @@ class AdgeistModule internal constructor(reactContext: ReactApplicationContext)
|
|
|
13
13
|
|
|
14
14
|
override fun getName(): String = AdgeistModuleImpl.NAME
|
|
15
15
|
|
|
16
|
+
@ReactMethod
|
|
17
|
+
fun initializeSdk(customDomain: String, promise: Promise) {
|
|
18
|
+
implementation.initializeSdk(customDomain, promise)
|
|
19
|
+
}
|
|
20
|
+
|
|
16
21
|
@ReactMethod
|
|
17
22
|
fun fetchCreative(apiKey: String, origin: String, adSpaceId: String, publisherId: String, isTestEnvironment: Boolean, promise: Promise) {
|
|
18
23
|
implementation.fetchCreative(apiKey, origin, adSpaceId, publisherId, isTestEnvironment, promise)
|
package/ios/Adgeist.mm
CHANGED
|
@@ -20,6 +20,14 @@ RCT_EXPORT_MODULE(Adgeist)
|
|
|
20
20
|
return self;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
RCT_EXPORT_METHOD(initializeSdk:(NSString *)customDomain
|
|
24
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
25
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
26
|
+
{
|
|
27
|
+
[adgeist initializeSdkWithCustomDomain:customDomain
|
|
28
|
+
resolver:resolve
|
|
29
|
+
rejecter:reject];
|
|
30
|
+
}
|
|
23
31
|
|
|
24
32
|
// Exported methods for JS
|
|
25
33
|
RCT_EXPORT_METHOD(fetchCreative:(NSString *)apiKey
|
package/ios/AdgeistImpl.swift
CHANGED
|
@@ -3,7 +3,25 @@ import AdgeistKit
|
|
|
3
3
|
import React
|
|
4
4
|
|
|
5
5
|
@objc public class AdgeistImpl: NSObject {
|
|
6
|
-
private
|
|
6
|
+
private var adgeistInstance: AdgeistCore?
|
|
7
|
+
private var getAd: FetchCreative?
|
|
8
|
+
private var postCreativeAnalytic: CreativeAnalytics?
|
|
9
|
+
|
|
10
|
+
@objc public func initializeSdk(
|
|
11
|
+
customDomain: String?,
|
|
12
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
13
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
14
|
+
) {
|
|
15
|
+
do {
|
|
16
|
+
adgeistInstance = AdgeistCore.initialize(customDomain: customDomain ?? "bg-services-api.adgeist.ai")
|
|
17
|
+
getAd = adgeistInstance?.getCreative()
|
|
18
|
+
postCreativeAnalytic = adgeistInstance?.postCreativeAnalytics()
|
|
19
|
+
resolver("SDK initialized with domain: \(customDomain ?? "default")")
|
|
20
|
+
} catch {
|
|
21
|
+
rejecter("INIT_FAILED", "SDK initialization failed", error)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
7
25
|
@objc public func fetchCreative(
|
|
8
26
|
apiKey: String,
|
|
9
27
|
origin: String,
|
|
@@ -13,7 +31,12 @@ import React
|
|
|
13
31
|
resolver: @escaping RCTPromiseResolveBlock,
|
|
14
32
|
rejecter: @escaping RCTPromiseRejectBlock
|
|
15
33
|
) {
|
|
16
|
-
|
|
34
|
+
guard let getAd = getAd else {
|
|
35
|
+
rejecter("SDK_NOT_INITIALIZED", "SDK not initialized. Call initializeSdk() first.", nil)
|
|
36
|
+
return
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
getAd.fetchCreative(
|
|
17
40
|
apiKey: apiKey,
|
|
18
41
|
origin: origin,
|
|
19
42
|
adSpaceId: adSpaceId,
|
|
@@ -50,7 +73,12 @@ import React
|
|
|
50
73
|
resolver: @escaping RCTPromiseResolveBlock,
|
|
51
74
|
rejecter: @escaping RCTPromiseRejectBlock
|
|
52
75
|
) {
|
|
53
|
-
|
|
76
|
+
guard let postCreativeAnalytic = postCreativeAnalytic else {
|
|
77
|
+
rejecter("SDK_NOT_INITIALIZED", "SDK not initialized. Call initializeSdk() first.", nil)
|
|
78
|
+
return
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
postCreativeAnalytic.sendTrackingData(
|
|
54
82
|
campaignId: campaignId,
|
|
55
83
|
adSpaceId: adSpaceId,
|
|
56
84
|
publisherId: publisherId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAdgeist.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAdgeist.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAuBlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
|
|
@@ -1,26 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { createContext, useContext } from 'react';
|
|
3
|
+
import React, { createContext, useContext, useEffect, useState } from 'react';
|
|
4
|
+
import Adgeist from "../NativeAdgeist.js";
|
|
4
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
6
|
const AdgeistContext = /*#__PURE__*/createContext({
|
|
6
7
|
publisherId: '',
|
|
7
8
|
apiKey: '',
|
|
8
9
|
domain: '',
|
|
9
|
-
isTestEnvironment: true
|
|
10
|
+
isTestEnvironment: true,
|
|
11
|
+
isInitialized: false
|
|
10
12
|
});
|
|
11
13
|
export const AdgeistProvider = ({
|
|
12
14
|
children,
|
|
13
15
|
publisherId = '',
|
|
14
16
|
apiKey = '',
|
|
15
17
|
domain = '',
|
|
18
|
+
customAdgeistApiOrigin = 'bg-services-qa-api.adgeist.ai',
|
|
16
19
|
isTestEnvironment = true
|
|
17
20
|
}) => {
|
|
21
|
+
const [isInitialized, setIsInitialized] = useState(false);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const initializeAdgeist = async () => {
|
|
24
|
+
try {
|
|
25
|
+
await Adgeist.initializeSdk(customAdgeistApiOrigin);
|
|
26
|
+
setIsInitialized(true);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.error('Error initializing Adgeist SDK:', error);
|
|
29
|
+
setIsInitialized(false);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
initializeAdgeist();
|
|
33
|
+
}, [customAdgeistApiOrigin]);
|
|
18
34
|
return /*#__PURE__*/_jsx(AdgeistContext.Provider, {
|
|
19
35
|
value: {
|
|
20
36
|
publisherId,
|
|
21
37
|
apiKey,
|
|
22
38
|
domain,
|
|
23
|
-
isTestEnvironment
|
|
39
|
+
isTestEnvironment,
|
|
40
|
+
isInitialized
|
|
24
41
|
},
|
|
25
42
|
children: children
|
|
26
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","jsx","_jsx","AdgeistContext","publisherId","apiKey","domain","isTestEnvironment","AdgeistProvider","children","Provider","value","useAdgeistContext"],"sourceRoot":"../../../src","sources":["components/AdgeistProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useEffect","useState","Adgeist","jsx","_jsx","AdgeistContext","publisherId","apiKey","domain","isTestEnvironment","isInitialized","AdgeistProvider","children","customAdgeistApiOrigin","setIsInitialized","initializeAdgeist","initializeSdk","error","console","Provider","value","useAdgeistContext"],"sourceRoot":"../../../src","sources":["components/AdgeistProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC7E,OAAOC,OAAO,MAAM,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmBvC,MAAMC,cAAc,gBAAGP,aAAa,CAAqB;EACvDQ,WAAW,EAAE,EAAE;EACfC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE,EAAE;EACVC,iBAAiB,EAAE,IAAI;EACvBC,aAAa,EAAE;AACjB,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAmD,GAAGA,CAAC;EAClEC,QAAQ;EACRN,WAAW,GAAG,EAAE;EAChBC,MAAM,GAAG,EAAE;EACXC,MAAM,GAAG,EAAE;EACXK,sBAAsB,GAAG,+BAA+B;EACxDJ,iBAAiB,GAAG;AACtB,CAAC,KAAK;EACJ,MAAM,CAACC,aAAa,EAAEI,gBAAgB,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAEzDD,SAAS,CAAC,MAAM;IACd,MAAMe,iBAAiB,GAAG,MAAAA,CAAA,KAAY;MACpC,IAAI;QACF,MAAMb,OAAO,CAACc,aAAa,CAACH,sBAAsB,CAAC;QACnDC,gBAAgB,CAAC,IAAI,CAAC;MACxB,CAAC,CAAC,OAAOG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,iCAAiC,EAAEA,KAAK,CAAC;QACvDH,gBAAgB,CAAC,KAAK,CAAC;MACzB;IACF,CAAC;IAEDC,iBAAiB,CAAC,CAAC;EACrB,CAAC,EAAE,CAACF,sBAAsB,CAAC,CAAC;EAE5B,oBACET,IAAA,CAACC,cAAc,CAACc,QAAQ;IACtBC,KAAK,EAAE;MAAEd,WAAW;MAAEC,MAAM;MAAEC,MAAM;MAAEC,iBAAiB;MAAEC;IAAc,CAAE;IAAAE,QAAA,EAExEA;EAAQ,CACc,CAAC;AAE9B,CAAC;AAED,OAAO,MAAMS,iBAAiB,GAAGA,CAAA,KAAMtB,UAAU,CAACM,cAAc,CAAC","ignoreList":[]}
|
|
@@ -4,13 +4,16 @@ import React, { useEffect, useState } from 'react';
|
|
|
4
4
|
import { Dimensions, Image, Linking, StyleSheet, Text, View, TouchableWithoutFeedback, ActivityIndicator } from 'react-native';
|
|
5
5
|
import Adgeist from "../NativeAdgeist.js";
|
|
6
6
|
import { useAdgeistContext } from "./AdgeistProvider.js";
|
|
7
|
+
import Video from 'react-native-video';
|
|
7
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
9
|
export const BannerAd = ({
|
|
9
|
-
dataAdSlot
|
|
10
|
+
dataAdSlot,
|
|
11
|
+
dataSlotType = 'banner'
|
|
10
12
|
}) => {
|
|
11
13
|
const [adData, setAdData] = useState(null);
|
|
12
14
|
const [isLoading, setIsLoading] = useState(false);
|
|
13
15
|
const {
|
|
16
|
+
isInitialized,
|
|
14
17
|
publisherId,
|
|
15
18
|
apiKey,
|
|
16
19
|
domain,
|
|
@@ -20,19 +23,21 @@ export const BannerAd = ({
|
|
|
20
23
|
useEffect(() => {
|
|
21
24
|
(async () => {
|
|
22
25
|
try {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
if (isInitialized) {
|
|
27
|
+
setIsLoading(true);
|
|
28
|
+
const response = await Adgeist.fetchCreative(apiKey, domain, dataAdSlot, publisherId, isTestEnvironment);
|
|
29
|
+
const creative = response;
|
|
30
|
+
setAdData(creative.data);
|
|
31
|
+
setIsLoading(false);
|
|
32
|
+
if (creative.data.seatBid.length > 0) {
|
|
33
|
+
await Adgeist.sendCreativeAnalytic(creative.data.seatBid?.[0]?.bid?.[0]?.id || '', dataAdSlot, publisherId, 'IMPRESSION', domain, apiKey, creative.data.id, isTestEnvironment);
|
|
34
|
+
}
|
|
30
35
|
}
|
|
31
36
|
} catch (error) {
|
|
32
37
|
console.error('Ad load failed:', error);
|
|
33
38
|
}
|
|
34
39
|
})();
|
|
35
|
-
}, [publisherId, dataAdSlot, apiKey, domain, isTestEnvironment]);
|
|
40
|
+
}, [isInitialized, publisherId, dataAdSlot, apiKey, domain, isTestEnvironment]);
|
|
36
41
|
const handleClick = async () => {
|
|
37
42
|
if (adData && adData?.seatBid.length > 0) {
|
|
38
43
|
await Adgeist.sendCreativeAnalytic(adData?.seatBid?.[0]?.bid?.[0]?.id || '', dataAdSlot, publisherId, 'CLICK', domain, apiKey, adData.id, isTestEnvironment);
|
|
@@ -54,7 +59,7 @@ export const BannerAd = ({
|
|
|
54
59
|
accessibilityLabel: "Ad Banner",
|
|
55
60
|
children: /*#__PURE__*/_jsxs(View, {
|
|
56
61
|
style: styles.adContainer,
|
|
57
|
-
children: [/*#__PURE__*/_jsx(Image, {
|
|
62
|
+
children: [dataSlotType == 'banner' ? /*#__PURE__*/_jsx(Image, {
|
|
58
63
|
style: [styles.creative, {
|
|
59
64
|
width: '100%',
|
|
60
65
|
height: 300
|
|
@@ -62,6 +67,15 @@ export const BannerAd = ({
|
|
|
62
67
|
source: {
|
|
63
68
|
uri: creativeData.creativeUrl
|
|
64
69
|
}
|
|
70
|
+
}) : /*#__PURE__*/_jsx(Video, {
|
|
71
|
+
source: {
|
|
72
|
+
uri: creativeData.creativeUrl
|
|
73
|
+
},
|
|
74
|
+
style: {
|
|
75
|
+
width: '100%',
|
|
76
|
+
aspectRatio: 16 / 9,
|
|
77
|
+
height: 300
|
|
78
|
+
}
|
|
65
79
|
}), /*#__PURE__*/_jsxs(View, {
|
|
66
80
|
style: styles.adContent,
|
|
67
81
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","Dimensions","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","ActivityIndicator","Adgeist","useAdgeistContext","jsx","_jsx","jsxs","_jsxs","BannerAd","dataAdSlot","adData","setAdData","isLoading","setIsLoading","publisherId","apiKey","domain","isTestEnvironment","creativeData","seatBid","bid","ext","response","fetchCreative","creative","data","length","sendCreativeAnalytic","id","error","console","handleClick","openURL","ctaUrl","catch","err","style","styles","loadingOverlayContainer","children","size","color","creativeUrl","accessible","accessibilityLabel","adContainer","width","height","source","uri","adContent","contentContainer","title","numberOfLines","ellipsizeMode","creativeTitle","description","creativeDescription","brandName","creativeBrandName","onPress","linkButton","create","get","backgroundColor","borderRadius","alignItems","justifyContent","resizeMode","borderTopLeftRadius","borderTopRightRadius","flexDirection","paddingVertical","paddingHorizontal","borderBottomLeftRadius","borderBottomRightRadius","fontSize","fontWeight","opacity","marginTop"],"sourceRoot":"../../../src","sources":["components/BannerAd.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SACEC,UAAU,EACVC,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,IAAI,EACJC,IAAI,EACJC,wBAAwB,EACxBC,iBAAiB,QACZ,cAAc;AACrB,OAAOC,OAAO,MAAM,qBAAkB;AACtC,SAASC,iBAAiB,QAAQ,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","Dimensions","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","ActivityIndicator","Adgeist","useAdgeistContext","Video","jsx","_jsx","jsxs","_jsxs","BannerAd","dataAdSlot","dataSlotType","adData","setAdData","isLoading","setIsLoading","isInitialized","publisherId","apiKey","domain","isTestEnvironment","creativeData","seatBid","bid","ext","response","fetchCreative","creative","data","length","sendCreativeAnalytic","id","error","console","handleClick","openURL","ctaUrl","catch","err","style","styles","loadingOverlayContainer","children","size","color","creativeUrl","accessible","accessibilityLabel","adContainer","width","height","source","uri","aspectRatio","adContent","contentContainer","title","numberOfLines","ellipsizeMode","creativeTitle","description","creativeDescription","brandName","creativeBrandName","onPress","linkButton","create","get","backgroundColor","borderRadius","alignItems","justifyContent","resizeMode","borderTopLeftRadius","borderTopRightRadius","flexDirection","paddingVertical","paddingHorizontal","borderBottomLeftRadius","borderBottomRightRadius","fontSize","fontWeight","opacity","marginTop"],"sourceRoot":"../../../src","sources":["components/BannerAd.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { TurboModule } from 'react-native';
|
|
2
2
|
export interface Spec extends TurboModule {
|
|
3
|
+
initializeSdk(customDomain: string): Promise<boolean>;
|
|
3
4
|
fetchCreative(apiKey: string, origin: string, adSpaceId: string, publisherId: string, isTestEnvironment: boolean): Promise<Object>;
|
|
4
5
|
sendCreativeAnalytic(campaignId: string, adSpaceId: string, publisherId: string, eventType: string, origin: string, apiKey: string, bidId: string, isTestEnvironment: boolean): Promise<Object>;
|
|
5
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeAdgeist.d.ts","sourceRoot":"","sources":["../../../src/NativeAdgeist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,oBAAoB,CAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;;AAED,wBAAiE"}
|
|
1
|
+
{"version":3,"file":"NativeAdgeist.d.ts","sourceRoot":"","sources":["../../../src/NativeAdgeist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,oBAAoB,CAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;;AAED,wBAAiE"}
|
|
@@ -4,9 +4,11 @@ interface AdgeistContextType {
|
|
|
4
4
|
apiKey: string;
|
|
5
5
|
domain: string;
|
|
6
6
|
isTestEnvironment: boolean;
|
|
7
|
+
isInitialized: boolean;
|
|
7
8
|
}
|
|
8
9
|
interface AdgeistProviderPropsType {
|
|
9
10
|
children: React.ReactNode;
|
|
11
|
+
customAdgeistApiOrigin?: string;
|
|
10
12
|
publisherId: string;
|
|
11
13
|
apiKey: string;
|
|
12
14
|
domain: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdgeistProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AdgeistProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AdgeistProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AdgeistProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAG9E,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAUD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA+B9D,CAAC;AAEF,eAAO,MAAM,iBAAiB,0BAAmC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAyCnD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAyI5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thealteroffice/react-native-adgeist",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "Publishers can integrate our SDK to connect their ad spaces to the AdGeist marketplace.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"module": "./lib/module/index.js",
|
|
@@ -167,5 +167,8 @@
|
|
|
167
167
|
"type": "turbo-module",
|
|
168
168
|
"languages": "kotlin-objc",
|
|
169
169
|
"version": "0.49.8"
|
|
170
|
+
},
|
|
171
|
+
"dependencies": {
|
|
172
|
+
"react-native-video": "^6.16.0"
|
|
170
173
|
}
|
|
171
174
|
}
|
package/src/NativeAdgeist.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import React, { createContext, useContext } from 'react';
|
|
1
|
+
import React, { createContext, useContext, useEffect, useState } from 'react';
|
|
2
|
+
import Adgeist from '../NativeAdgeist';
|
|
2
3
|
|
|
3
4
|
interface AdgeistContextType {
|
|
4
5
|
publisherId: string;
|
|
5
6
|
apiKey: string;
|
|
6
7
|
domain: string;
|
|
7
8
|
isTestEnvironment: boolean;
|
|
9
|
+
isInitialized: boolean;
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
interface AdgeistProviderPropsType {
|
|
11
13
|
children: React.ReactNode;
|
|
14
|
+
customAdgeistApiOrigin?: string;
|
|
12
15
|
publisherId: string;
|
|
13
16
|
apiKey: string;
|
|
14
17
|
domain: string;
|
|
@@ -20,6 +23,7 @@ const AdgeistContext = createContext<AdgeistContextType>({
|
|
|
20
23
|
apiKey: '',
|
|
21
24
|
domain: '',
|
|
22
25
|
isTestEnvironment: true,
|
|
26
|
+
isInitialized: false,
|
|
23
27
|
});
|
|
24
28
|
|
|
25
29
|
export const AdgeistProvider: React.FC<AdgeistProviderPropsType> = ({
|
|
@@ -27,11 +31,28 @@ export const AdgeistProvider: React.FC<AdgeistProviderPropsType> = ({
|
|
|
27
31
|
publisherId = '',
|
|
28
32
|
apiKey = '',
|
|
29
33
|
domain = '',
|
|
34
|
+
customAdgeistApiOrigin = 'bg-services-qa-api.adgeist.ai',
|
|
30
35
|
isTestEnvironment = true,
|
|
31
36
|
}) => {
|
|
37
|
+
const [isInitialized, setIsInitialized] = useState(false);
|
|
38
|
+
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
const initializeAdgeist = async () => {
|
|
41
|
+
try {
|
|
42
|
+
await Adgeist.initializeSdk(customAdgeistApiOrigin);
|
|
43
|
+
setIsInitialized(true);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error('Error initializing Adgeist SDK:', error);
|
|
46
|
+
setIsInitialized(false);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
initializeAdgeist();
|
|
51
|
+
}, [customAdgeistApiOrigin]);
|
|
52
|
+
|
|
32
53
|
return (
|
|
33
54
|
<AdgeistContext.Provider
|
|
34
|
-
value={{ publisherId, apiKey, domain, isTestEnvironment }}
|
|
55
|
+
value={{ publisherId, apiKey, domain, isTestEnvironment, isInitialized }}
|
|
35
56
|
>
|
|
36
57
|
{children}
|
|
37
58
|
</AdgeistContext.Provider>
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
} from 'react-native';
|
|
12
12
|
import Adgeist from '../NativeAdgeist';
|
|
13
13
|
import { useAdgeistContext } from './AdgeistProvider';
|
|
14
|
+
import Video from 'react-native-video';
|
|
14
15
|
|
|
15
16
|
interface AdData {
|
|
16
17
|
id: string;
|
|
@@ -40,14 +41,18 @@ interface BidExtension {
|
|
|
40
41
|
}
|
|
41
42
|
interface AdBannerTypes {
|
|
42
43
|
dataAdSlot: string;
|
|
44
|
+
dataSlotType: 'banner' | 'video';
|
|
43
45
|
width: number;
|
|
44
46
|
height: number;
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
export const BannerAd: React.FC<AdBannerTypes> = ({
|
|
49
|
+
export const BannerAd: React.FC<AdBannerTypes> = ({
|
|
50
|
+
dataAdSlot,
|
|
51
|
+
dataSlotType = 'banner',
|
|
52
|
+
}) => {
|
|
48
53
|
const [adData, setAdData] = useState<AdData | null>(null);
|
|
49
54
|
const [isLoading, setIsLoading] = useState(false);
|
|
50
|
-
const { publisherId, apiKey, domain, isTestEnvironment } =
|
|
55
|
+
const { isInitialized, publisherId, apiKey, domain, isTestEnvironment } =
|
|
51
56
|
useAdgeistContext();
|
|
52
57
|
|
|
53
58
|
const creativeData = adData?.seatBid?.[0]?.bid?.[0]?.ext as BidExtension;
|
|
@@ -55,36 +60,45 @@ export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
|
|
|
55
60
|
useEffect(() => {
|
|
56
61
|
(async () => {
|
|
57
62
|
try {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
publisherId,
|
|
64
|
-
isTestEnvironment
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const creative: { data: AdData } = response as { data: AdData };
|
|
68
|
-
setAdData(creative.data);
|
|
69
|
-
setIsLoading(false);
|
|
70
|
-
|
|
71
|
-
if (creative.data.seatBid.length > 0) {
|
|
72
|
-
await Adgeist.sendCreativeAnalytic(
|
|
73
|
-
creative.data.seatBid?.[0]?.bid?.[0]?.id || '',
|
|
63
|
+
if (isInitialized) {
|
|
64
|
+
setIsLoading(true);
|
|
65
|
+
const response: Object = await Adgeist.fetchCreative(
|
|
66
|
+
apiKey,
|
|
67
|
+
domain,
|
|
74
68
|
dataAdSlot,
|
|
75
69
|
publisherId,
|
|
76
|
-
'IMPRESSION',
|
|
77
|
-
domain,
|
|
78
|
-
apiKey,
|
|
79
|
-
creative.data.id,
|
|
80
70
|
isTestEnvironment
|
|
81
71
|
);
|
|
72
|
+
|
|
73
|
+
const creative: { data: AdData } = response as { data: AdData };
|
|
74
|
+
setAdData(creative.data);
|
|
75
|
+
setIsLoading(false);
|
|
76
|
+
|
|
77
|
+
if (creative.data.seatBid.length > 0) {
|
|
78
|
+
await Adgeist.sendCreativeAnalytic(
|
|
79
|
+
creative.data.seatBid?.[0]?.bid?.[0]?.id || '',
|
|
80
|
+
dataAdSlot,
|
|
81
|
+
publisherId,
|
|
82
|
+
'IMPRESSION',
|
|
83
|
+
domain,
|
|
84
|
+
apiKey,
|
|
85
|
+
creative.data.id,
|
|
86
|
+
isTestEnvironment
|
|
87
|
+
);
|
|
88
|
+
}
|
|
82
89
|
}
|
|
83
90
|
} catch (error) {
|
|
84
91
|
console.error('Ad load failed:', error);
|
|
85
92
|
}
|
|
86
93
|
})();
|
|
87
|
-
}, [
|
|
94
|
+
}, [
|
|
95
|
+
isInitialized,
|
|
96
|
+
publisherId,
|
|
97
|
+
dataAdSlot,
|
|
98
|
+
apiKey,
|
|
99
|
+
domain,
|
|
100
|
+
isTestEnvironment,
|
|
101
|
+
]);
|
|
88
102
|
|
|
89
103
|
const handleClick = async () => {
|
|
90
104
|
if (adData && adData?.seatBid.length > 0) {
|
|
@@ -117,10 +131,18 @@ export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
|
|
|
117
131
|
return (
|
|
118
132
|
<TouchableWithoutFeedback accessible accessibilityLabel="Ad Banner">
|
|
119
133
|
<View style={styles.adContainer}>
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
134
|
+
{dataSlotType == 'banner' ? (
|
|
135
|
+
<Image
|
|
136
|
+
style={[styles.creative, { width: '100%', height: 300 }]}
|
|
137
|
+
source={{ uri: creativeData.creativeUrl }}
|
|
138
|
+
/>
|
|
139
|
+
) : (
|
|
140
|
+
<Video
|
|
141
|
+
source={{ uri: creativeData.creativeUrl }}
|
|
142
|
+
style={{ width: '100%', aspectRatio: 16 / 9, height: 300 }}
|
|
143
|
+
/>
|
|
144
|
+
)}
|
|
145
|
+
|
|
124
146
|
<View style={styles.adContent}>
|
|
125
147
|
<View style={styles.contentContainer}>
|
|
126
148
|
<Text style={styles.title} numberOfLines={1} ellipsizeMode="tail">
|