osmos-web-sdk
Version:
OnlineSales.ai Web SDK for Vue and React projects
298 lines (236 loc) • 6.58 kB
Markdown
一个用于Vue和React项目的JavaScript SDK,用于集成OnlineSales.ai的广告和跟踪功能。
```bash
npm install osmos-web-sdk
```
```javascript
import { OsmosSDK } from 'osmos-web-sdk';
const osmos = new OsmosSDK();
osmos.initialize({
clientId: YOUR_CLIENT_ID,
productAdsHost: "api.onlinesales.ai",
displayAdsHost: "brand-api.onlinesales.ai",
debugMode: true // 开发时启用调试模式
});
```
```javascript
// 获取产品页面广告
const productAds = await osmos.adFetcher.fetchPLAProductPageAds({
cliUbid: "user_123",
skuIds: ["LAPTOP123"],
productCount: 3
});
// 获取搜索页面广告
const searchAds = await osmos.adFetcher.fetchPLASearchPageAds({
cliUbid: "user_456",
keyword: "wireless headphones",
productCount: 4
});
// 获取展示广告
const displayAds = await osmos.adFetcher.fetchDisplayAds({
cliUbid: "user_789",
pageType: "CATEGORY",
adUnit: ["HEADER_BANNER", "SIDEBAR_AD"],
productCount: 2
});
```
```javascript
// 跟踪产品查看
await osmos.tracking.trackProductView("LAPTOP123");
// 跟踪添加到购物车
await osmos.tracking.trackAddToCart("LAPTOP123", 1);
// 跟踪购买
await osmos.tracking.trackPurchase(["LAPTOP123", "MOUSE456"], 1299.99);
// 跟踪广告点击
await osmos.tracking.trackAdClick("ad_123", "HEADER_BANNER");
```
- `clientId`: 客户端ID(由OnlineSales.ai提供)
- `productAdsHost`: 产品广告服务器主机名
- `displayAdsHost`: 展示广告服务器主机名
- `eventTrackingHost`: 事件跟踪服务器主机名
- `cliUbid`: 客户端生成的唯一浏览器ID
- `device`: 设备类型('MOBILE', 'TABLET', 'DESKTOP')
- `enableTracking`: 是否启用事件跟踪(默认:true)
- `debugMode`: 是否启用调试模式(默认:false)
获取展示广告
获取产品页面广告
获取搜索页面广告
获取分类页面广告
获取TPA页面广告
获取购买页面广告
获取首页广告
获取自定义页面广告
跟踪产品查看事件
跟踪添加到购物车事件
跟踪购买事件
跟踪广告点击事件
跟踪视频观看事件
跟踪搜索事件
跟踪页面浏览事件
```vue
<template>
<div>
<div v-if="ads.length > 0">
<div v-for="ad in ads" :key="ad.id" class="ad-item">
<img :src="ad.image" :alt="ad.title" />
<h3>{{ ad.title }}</h3>
<p>{{ ad.price }}</p>
<button @click="handleAdClick(ad)">查看详情</button>
</div>
</div>
</div>
</template>
<script>
import { OsmosSDK } from 'osmos-web-sdk';
export default {
name: 'ProductAds',
data() {
return {
osmos: null,
ads: []
};
},
async mounted() {
// 初始化SDK
this.osmos = new OsmosSDK();
this.osmos.initialize({
clientId: YOUR_CLIENT_ID,
productAdsHost: "api.onlinesales.ai",
displayAdsHost: "brand-api.onlinesales.ai"
});
// 获取广告
await this.loadAds();
},
methods: {
async loadAds() {
try {
const response = await this.osmos.adFetcher.fetchPLAProductPageAds({
cliUbid: "user_123",
skuIds: ["LAPTOP123"],
productCount: 3
});
if (response.success) {
this.ads = response.data;
}
} catch (error) {
console.error('Failed to load ads:', error);
}
},
async handleAdClick(ad) {
await this.osmos.tracking.trackAdClick(ad.id, "PRODUCT_RECOMMENDATION");
// 处理广告点击逻辑
}
}
};
</script>
```
```jsx
import React, { useState, useEffect } from 'react';
import { OsmosSDK } from 'osmos-web-sdk';
const ProductAds = () => {
const [osmos, setOsmos] = useState(null);
const [ads, setAds] = useState([]);
useEffect(() => {
// 初始化SDK
const sdk = new OsmosSDK();
sdk.initialize({
clientId: YOUR_CLIENT_ID,
productAdsHost: "api.onlinesales.ai",
displayAdsHost: "brand-api.onlinesales.ai"
});
setOsmos(sdk);
// 加载广告
loadAds(sdk);
}, []);
const loadAds = async (sdk) => {
try {
const response = await sdk.adFetcher.fetchPLAProductPageAds({
cliUbid: "user_123",
skuIds: ["LAPTOP123"],
productCount: 3
});
if (response.success) {
setAds(response.data);
}
} catch (error) {
console.error('Failed to load ads:', error);
}
};
const handleAdClick = async (ad) => {
await osmos.tracking.trackAdClick(ad.id, "PRODUCT_RECOMMENDATION");
// 处理广告点击逻辑
};
return (
<div>
{ads.length > 0 && (
<div className="ads-container">
{ads.map(ad => (
<div key={ad.id} className="ad-item">
<img src={ad.image} alt={ad.title} />
<h3>{ad.title}</h3>
<p>{ad.price}</p>
<button onClick={() => handleAdClick(ad)}>查看详情</button>
</div>
))}
</div>
)}
</div>
);
};
export default ProductAds;
```
SDK也可以在浏览器中通过全局对象使用:
```html
<script src="https://c.o-s.io/osmos-web-sdk/sdk.js"></script>
<script>
// 初始化
osmos.initialize({
clientId: YOUR_CLIENT_ID,
productAdsHost: "api.onlinesales.ai",
displayAdsHost: "brand-api.onlinesales.ai"
});
// 获取广告
osmos.adFetcher.fetchPLAProductPageAds({
cliUbid: "user_123",
skuIds: ["LAPTOP123"],
productCount: 3
}).then(response => {
if (response.success) {
console.log('Ads loaded:', response.data);
}
});
// 跟踪事件
osmos.tracking.trackProductView("LAPTOP123");
</script>
```
MIT License