octopus-ad
Version:
Quickapp Sample Template
182 lines (164 loc) • 4.19 kB
JavaScript
import device from '@system.device'
import pkg from '@system.package'
import router from '@system.router'
import storage from '@system.storage'
import { promisify, report } from './index'
export const getDeviceInfo = async () => {
try {
const getHasInstalled = promisify(pkg.hasInstalled)
const getStorage = promisify(storage.get);
const getInfo = promisify(device.getInfo)
const getOAID = promisify(device.getOAID)
const getDeviceId = promisify(device.getDeviceId);
const getTotalStorage = promisify(device.getTotalStorage);
const getUserId = promisify(device.getUserId);
const info = await getInfo()
const res = await getOAID()
const { userId } = await getUserId()
const { oaid } = res
const totalStorage = await getTotalStorage()
let deviceId = '';
try {
const deviceIdData = await getDeviceId();
deviceId = deviceIdData.deviceId;
} catch (error) { }
const {
brand,
manufacturer,
model,
osType,
osVersionName,
osVersionCode,
deviceType,
screenWidth,
screenHeight,
language,
screenDensity,
} = info
const wx_installed = await getHasInstalled({
package: 'com.tencent.mm',
})
return {
os: `${osVersionName}(${osVersionCode})`,
platform: `PLATFORM_${osType}`.toUpperCase(),
devType: `DEVICE_${deviceType}`.toUpperCase(),
brand: brand ? brand.toUpperCase() : '',
model,
manufacturer,
resolution: `${screenHeight}_${screenWidth}`,
screenSize: `5.7`,
language,
density: screenDensity.toFixed(2),
androidId: userId,
imei: deviceId,
oaid: deviceId || oaid || userId,
wx_installed: wx_installed.result,
harddiskSize: totalStorage.totalStorage,
// brand, model, osType, osVersionName, osVersionCode, deviceType, screenWidth, screenHeight, language, screenDensity, screenRefreshRate
}
} catch (error) {
console.error(error);
return null
}
}
export const getNetworkType = async () => {
const getType = promisify(device.getNetworkType)
try {
const data = await getType()
return data.type
} catch (error) {
return null
}
}
export const getSimOperator = async () => {
const getSimOperator = promisify(device.getSimOperator)
const options = [{
label: 'CN_MOBILE',
mnc: [46000, 46002, 46004, 46007]
}, {
label: 'CN_UNICOM',
mnc: [46001, 46006, 46009]
}, {
}, {
label: 'CN_TEL',
mnc: [46003, 46005, 46011]
}]
try {
const data = await getSimOperator()
const list = data.simOperators
const target = list[0];
const { operator } = target
let label = ''
options.forEach(item => {
if (item.mnc.includes(operator)) {
label = item.label
}
})
return `LSP_${label}`
} catch (error) {
return 'LSP_UNKNOWN'
}
}
export const handleAdClick = async ({
packageName,
deeplinkUrl,
landingPageUrl,
interactType,
dpSucessUrl,
downSucessUrl,
click,
shouldReport
}) => {
if (interactType === 4) {
report(click, 0, shouldReport).then(() => {
router.push({
uri: landingPageUrl,
})
})
return
}
if (interactType === 2) {
if (packageName === '' || deeplinkUrl === '') {
report(click, 0, shouldReport)
if (landingPageUrl) {
router.push({
uri: landingPageUrl,
})
return;
}
return;
}
report(click, 0)
pkg.hasInstalled({
package: packageName,
success: function(data) {
if (data.result) {
report(dpSucessUrl, 0).then(() => {
router.push({
uri: deeplinkUrl,
})
})
} else {
pkg.install({
package: packageName,
success: function() {
report(downSucessUrl, '6',)
}
})
}
},
})
}
}
export const getScreenSize = async () => {
const getInfo = promisify(device.getInfo)
const info = await getInfo();
const {
windowWidth,
windowHeight,
} = info;
return {
width: windowWidth,
height: windowHeight,
}
}