广告平台对接第三方插件集成指引
此文档是针对使用了 渠道统计 功能中的 广告渠道 效果监测功能而提供的补充性文档。
1. apiCloud
注意:为了兼容iOS的idfa获取以及android的imei权限获取,从openinstall模块1.3.0版本开始,必须添加模块初始化方法,升级的用户请注意添加
对于iOS平台,获取idfa使用的是apicloud官方模块iAd,需要用户主动添加,iAd模块
openinstall模块初始化代码如下:
apiready = function() {
var openinstall = api.require('openinstall');
if (api.systemType == "ios") {
//需要用到idfa时,先获取idfa,再初始化
var iAd = api.require('iAd');//引入iAd模块
var iAd = iAd.getIDFA({
lowerCase: false
}, function(ret) {
openinstall.init({
deviceId:ret.IDFA
});
});
} else if (api.systemType == "android") {
//申请权限并初始化
var permissions = [];
permissions.push('phone-r');
var result = api.hasPermission({
list: permissions
});
if(result && result[0] && !result[0].granted){
//没有权限,去申请
api.requestPermission({
list: permissions,
code: 100
}, function(ret, err){
//不管是否申请到权限都要调用初始化
openinstall.init();
});
}else{
openinstall.init();
}
}
};
2. dcloud
2.1 uni-App
Android平台
(1) 在manifest.json
中声明权限,在 “App模块权限配置” 的 “Android打包权限配置” 勾选上<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
(2)在manifest.json
中设置,关闭uni-app
自动获取android.permission.READ_PHONE_STATE
权限
{
"app-plus" : {
"distribute" : {
"android" : {
"permissionPhoneState" : {
"request" : "none",
"prompt" : ""
},
}
}
}
}
(3)在App.vue
的onLaunch
方法中进行初始化,在初始化之前申请权限
if (plus.os.name == "Android") {
plus.android.requestPermissions(["android.permission.READ_PHONE_STATE"], function(event) {
if(event.granted){
console.log(event.granted);
}
if(event.deniedPresent){
console.log(event.deniedPresent);
}
if(event.deniedAlways){
console.log(event.deniedAlways);
}
// 权限申请成功,不管用户是否同意,都需要做初始化
// openinstall.init();
openinstall.registerWakeUp(function(result){
console.log('getWakeup : channel=' + result.channelCode + ', data=' + result.bindData);
});
}, function(event) {
// 权限申请错误
})
}
iOS平台
(1)需在manifest.json的 “App常用其它设置” 中配置勾选 “使用广告标识(IDFA)”
(2)下载官方插件iOS平台获取idfa,并保存到目录下,如js_sdk/dc-idfa/idfa.js
(3)在App.vue
中引用此模块,如下:
import idfa from "@/js_sdk/dc-idfa/idfa.js"
(4)在App.vue
的onLaunch
方法中进行初始化,如下:
if('iOS' == plus.os.name){
var fid = "";
fid = idfa.value();//如果需要idfa则开启
openinstall.init(fid);
console.log(fid);
};
2.2 hbuilder
Android
第二个参数表示是否需要申请权限
// 需要申请权限
plus.openinstall.registerWakeUpHandler(wakeup, true);
iOS
(1)方式一,将iOS/OpenInstallApiManager.m
文件替换为ad-track/OpenInstallApiManager.m
文件
(2)方式二,修改iOS/OpenInstallApiManager.m
文件代码,添加系统广告头文件和openinstall初始化代码:
#import <AdSupport/AdSupport.h>//使用idfa时引入(可选)
找到onAppStarted
初始化方法,使用新API接口替换掉原先的初始化方法[OpenInstallSDK initWithDelegate:self];
,替换后方法如下:
-(void)onAppStarted:(NSDictionary*)options{
NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
[OpenInstallSDK initWithDelegate:self advertisingId:idfaStr];
}
3. react-native
Android 平台
(1)声明权限openinstall-react-native
已经在AndroidMainfest.xml
配置文件中添加了需要申请的权限
(2)申请权限
导入包
import { PermissionsAndroid } from 'react-native'
在App.js
的componentDidMount
方法中初始化,并且在初始化之前申请权限
this.receiveWakeupListener = map => {
Alert.alert('拉起回调',JSON.stringify(map))
}
var permission = PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE;
PermissionsAndroid.request(permission)
.then(granted => {
if (granted === PermissionsAndroid.RESULTS.GRANTED){
//权限获取成功
}else{
//权限获取失败
}
// openinstall.init();
OpeninstallModule.addWakeUpListener(this.receiveWakeupListener)
})
iOS 平台
(1)自动集成
使用自动集成脚本集成代码,如下:
npm run openinstall <yourAppKey> <yourScheme> iosIDFA
- yourAppKey指的是你在openinstall官方账号后台,创建应用后分配的AppKey
- yourScheme指的是你在openinstall官方账号后台,创建应用后分配的scheme
(scheme详细获取位置:openinstall应用控制台->Android集成->Android应用配置,iOS同理)
举例:
npm run openinstall e7iomw rc8tey iosIDFA
(2)手动集成
用Xcode打开iOS工程,pod集成的打开xcworkspace类型文件,找到AppDelegate.h
文件,添加头文件
#import <AdSupport/AdSupport.h>//需要使用idfa时引入
#import <RCTOpenInstall/RCTOpenInstall.h>
//通过cocoapod安装插件头文件路径不一样,如下
#import <openinstall-react-native/RCTOpenInstall.h>
在AppDelegate.m
的didFinishLaunchingWithOptions
方法里引用如下初始化方法,传入idfa字符串
NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
[OpenInstallSDK initWithDelegate:self advertisingId:idfaStr];
4. unity3d
使用广告渠道统计,请升级到最新插件版本,广告渠道效果监测功能在SDK version >= 2.4.0下可用。
Android平台
将AndroidMainfest.xml
的参考文件替换,使用sample/Android/ad-track/AndroidManifest.xml
iOS平台
将Openinstall.unitypackage
中的CustomAppController.mm
文件替换,使用sample/iOS/ad-track/CustomAppController.mm
- 如果发生编译错误,可能需要手动添加 AdSupport.framework 库
5. cordova
使用广告渠道统计,请升级到最新插件版本,广告渠道效果监测功能在SDK version >= 2.4.0下可用。
Android平台
iOS平台
6. flutter
使用广告渠道统计,请升级到最新插件版本,广告渠道效果监测功能在SDK version >= 2.4.0下可用。
Android平台
(1)声明权限openinstall-flutter-plugin
已经在AndroidMainfest.xml
配置文件中添加了需要申请的权限
(2)可使用插件提供的 api 进行权限申请,调用初始化 api,第二个参数permission=true
表示插件进行权限申请
_openinstallFlutterPlugin.init(wakeupHandler, true);
(3)也可在Flutter
自行进行权限申请,只需要确保在初始化之前申请权限,例如
// 使用 permission_handler
if (await Permission.phone.request().isGranted) {
// 获取到了权限
}
_openinstallFlutterPlugin.init(wakeupHandler);
iOS平台
(1)方式一,将ios/Classes/OpeninstallFlutterPlugin.m
文件替换为example/ad-track/OpeninstallFlutterPlugin.m
文件
(2)方式二,修改ios/Classes/OpeninstallFlutterPlugin.m
代码,添加系统广告头文件和openinstall初始化代码:
#import <AdSupport/AdSupport.h>//使用idfa时引入(可选)
找到init
初始化方法,使用新API接口替换掉原先的初始化方法[OpenInstallSDK initWithDelegate:self];
,替换后方法如下:
- (instancetype)init {
self = [super init];
if (self) {
[self initData];
//使用新的初始化方法,该方法在SDK>=2.4.0可用
NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
[OpenInstallSDK initWithDelegate:self advertisingId:idfaStr];
}
return self;
}
7. cocos2d-x
7.1 cocos2d-c++
使用广告渠道统计,请升级到最新插件版本,广告渠道效果监测功能在SDK version >= 2.4.0下可用。
Android平台
在AndroidMainfest.xml
配置文件中添加了需要申请的权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
调用init
方法时传入一个参数,表示是否是广告平台需要请求权限
openInstall2dx::OpenInstall::init(true);
iOS平台
(1)在AppController.mm
文件中引入系统广告头文件等,如下:
#import <AdSupport/AdSupport.h>
#import "OpenInstallSDK.h"
#import "CPOpenInstallDelegate.h"
(2)在didFinishLaunchingWithOptions
方法中添加以下方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//请在最开始时调用
NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
[OpenInstallSDK initWithDelegate:[CPOpenInstallDelegate defaultManager] advertisingId:idfaStr];
// Initialize the GLView attributes
// ...其它代码
return YES;
}
7.2 cocos2d-js
使用广告渠道统计,请升级到最新插件版本,广告渠道效果监测功能在SDK version >= 2.4.0下可用。
Android平台
在AndroidMainfest.xml
配置文件中添加了需要申请的权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
使用OpenInstallActivityAd
替换OpenInstallActivity
iOS平台
(1)在AppController.mm
中增加系统广告头文件的引用
#import <AdSupport/AdSupport.h>
#import "Openinstall.h"
(2)在AppController.mm
中替换掉老的初始化方法init,使用新的初始化方法,传入idfa字符串:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//尽量早的去调用
NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
[Openinstall initWithAdvertisingId:idfaStr];
//其他代码
return YES;
}
- 如果发生编译错误,可能需要手动添加 AdSupport.framework 库
7.3 cocos2d-lua
使用广告渠道统计,请升级到最新插件版本,广告渠道效果监测功能在SDK version >= 2.4.0下可用。
Android平台
在AndroidMainfest.xml
配置文件中添加了需要申请的权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
使用OpenInstallActivityAd
替换OpenInstallActivity
iOS平台
(1)在AppController.mm
文件中引入系统广告头文件
#import <AdSupport/AdSupport.h>
(2)替换老的初始化方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//[Openinstall init];//老的初始化方法,不需要idfa时使用
NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
[Openinstall initWithAdvertisingId:idfaStr];
return YES;
}