Vigame接入说明手册
1. 将相关的文件添加到工程中
(备注: 将deps文件删除引用。)
2. 添加所有的 .framework .a 文件 路径和头文件链接
(target->build setting -> search path ->Header Search Paths 中添加) 特殊添加一项目录 路径
"$(SRCROOT)/Vigame/include"
"$(SRCROOT)/Vigame/tools"
"$(SRCROOT)/Vigame/deps/boost/include"
"$(SRCROOT)/Vigame/deps/curl/include"
"$(SRCROOT)/Vigame/deps/openssl/include"
"$(SRCROOT)/Vigame/deps/zlib/include"
3. 添加必要配置
- 打开 Capabilities-> Keychain Sharing 获取设备唯一标识
- 在info.plist添加Google广告配置 GADIsAdManagerApp:YES
- 如果项目中使用到Applovin广告在info.plist添加 AppLovinSdkKey:Occxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 在VigameLibrary.plist 中检测 company_appid 、apple_appid、company_prijid. 以及相关的统计参数
- 如果出海外包带有Facebook广告 需要在info.plist文件中添加Facebook 中相关的配置如下:
- 苹果新出的规定无论有没有使用到相机相册都得申请 权限
- 游戏需要访问网络 需要有网络权限
- 游戏第三方可能会用到定位,所有游戏info.plist添加NSLocationWhenInUseUsageDescription
4.添加系统支持库文件
target->build phases -> Link Binary With Libraries
OpenGLES.framwork
OpenAL.framwork
iAd.framwork
WebKit.framwork
AVFoundation.framwork
Accelerate.framwork
MobileCoreServices.framwork
CoreMotion.framwork
CoreLocation.framwork
CoreTelephony.framwork
QuartzCore.framwork
StoreKit.framwork
AdSupport.framwork
UIKit.framwork
CoreFoundation.framwork
CoreGraphics.framwork
CoreMedia.framwork
CoreBluetooth.framwork
CoreText.framwork
Security.framwork
MediaPlayer.framwork
CFNetwork.framwork
libresolv.9.tbd
SystemConfiguration.framwork
MessageUI.framwork
JavaScriptCore.framwork
AudioToolBox.framwork
GLKit.framwork
libz.tbd
libsqlite3.tbd
libiconv.tbd
libxml2.tbd
libc++.tbd
libz.1.1.3.tbd
libresolv.tbd
libsqlite3.0.tbd
//接入tapjoy需要下面库并且需要添加测试设备
PassKit.framework
MapKit.framework
ImageIO.framework
CoreData.framework
5. 设备编译选项
Other Linker Flags添加-ObjC
6 常见配置错误及解决方法
- __weak typeof(self)wSelf = self报错:- A parameter list without types is only allowed in a function definition. A corresponding warning tells me that __weak only applies to Objective-C object or block pointer types;type here is 'int'
解决方案: Xcode-> Build Settings-> C Language Dialect修改配置,C99改为GNU99,C99不包含typeof
7. 确认c++ 编译项
8设置项目为自动内存管理
9接入微信配置(不接入忽略)
在info.plist文件添加
添加微信登陆URL Type
10 SDK初始化工作
1 导入头文件
在appDelegate文件中引入头文件#import "IOSLoader.h"
2 调用初始化入口文件
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[IOSLoader splashReport];//统计上报
return YES;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[IOSLoader progressWKContentViewCrash];//处理GDT开屏广告点击崩溃
[IOSLoader startLoaderLibrary];//初始化
return YES;
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if (userActivity.activityType == NSUserActivityTypeBrowsingWeb) {
[IOSLoader application:application continueUserActivity:userActivity];//appflyer统计相关设置
return YES;
}
return NO;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[IOSLoader is_Active:false];//更新状态
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[IOSLoader isAwaken];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[IOSLoader is_Active:true]; //更新状态、开屏广告
[IOSLoader openAwakenAd];
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[IOSLoader isOpenURL];//解决唤醒广告在微信登录、充值频繁问题
return YES;
}
11 代码调用
#import "IOSLoader.h"
1.通过广告位名称打开一个广告
// 打开一个横幅广告
[IOSLoader openBanner];
// 关闭横幅广告
[IOSLoader closeBanner];
// 打开一个原生横幅广告
[IOSLoader openYSBanner:@"yuans" rect:CGRectMake(100, 20, 300, 190)];
// 关闭原生横幅广告
[IOSLoader closeYSBanner:@"yuans"];
// 打开一个插屏广告
[IOSLoader openAd:@"game_fail" callback:^(BOOL flag) {
if (flag == false) {
//恢复游戏音效
}
}];
//建议更换下面接口
[IOSLoader openAd:@"game_fail" adCallback:^(BOOL flag, KTMADType type) {
if (type == KTMADTypePlaque && flag == false) {
//恢复游戏音效
}
}];
/*检查某个视频广告位是否加载成功*/
//
[IOSLoader isAdReady:@"rotary_mfzs"];
// 打开一个视频广告 && 监听是否视频播放成功
[IOSLoader openAd:@"rotary_mfzs" callback:^(BOOL flag) {
//处理加载框
if (flag) {
NSLog(@"open succed");
}
else {
NSLog(@"open failure");
}
}];
//建议更换下面接口
[IOSLoader openAd:@"rotary_mfzs" adCallback:^(BOOL flag, KTMADType type) {
//处理加载框
if (type == KTMADTypeVideo) {
if (flag) {
NSLog(@"open succed");
}
else {
NSLog(@"open failure");
}
}
}];
2.添加自定义统计事件
//统计
//统计付费
[IOSLoader tj_payWithMoney:6.00 productId:@"xxx.xxx.xxx" number:60 price:60];
+ (void)setFirstLaunchEventID0:(const char*)eventId0 eventID1:(const char*)eventId1 eventID2:(const char*)eventId2 eventID3:(const char*)eventId3;
+ (void)tj_name:(NSString *)name;
+ (void)tj_name:(NSString *)name value:(NSString *)value;
+ (void)tj_name:(const char *)name map:(const char *)json;
+ (void)isAdBeOpenInLevel:(NSString *)adPostionName level:(int)level;
//关卡统计相关接口
+ (void)tj_startLevel:(NSString *)level;
+ (void)tj_finishLevel:(NSString *)level;
+ (void)tj_failLevel:(NSString *)level;
//充值统计
+ (void)tj_payWithMoney:(double)money productId:(NSString *)productId number:(int)number price:(double)price;
// 导入支付头文件 发起支付
//充值接口
+ (void)textPayWithProductId:(int)productId;
//监听支付结果回调
+ (void)setOnPayFinishCallback:(void (^)(NSDictionary *))callback;
3.是否越狱/审核中
#pragma mark - 是否审核中
+ (BOOL)isAudit;
#pragma mark - 是否越狱
+ (BOOL)isRoot;
4.微信登陆
// 在AppDelegate.m导入头文件
#import "WXSocialAgent.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WXSocialAgent application:application DidFinishLaunchingWithOptions:launchOptions];
return YES;
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[[[WXSocialAgent alloc] init] application:app handleOpenURL:url];
return YES;
}
// 导入头文件
#import "IOSLoader.h"
*注本接口已整合微信登录逻辑(已登录不再跳转到登录,游戏方不需再判断是否登录的情况)
[IOSLoader wxLogin:^(KTMLoginState code, NSString *returnMsg) {
if (code == KTMLoginStateSuccess) {
//调用获取用户信息接口
[IOSLoader getWXUserInfo:^(NSDictionary *userInfo) {
NSLog(@"userInfo == %@",userInfo);
}];
}
}];
userInfo数据格式如下,按需获取头像地址、openid、nickname等信息
{
city = "";
country = "";
headimgurl = "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83epXrSKiaXoSxs38WdicmRuwQQjzk5Xnia9N3OAfGCGdIjRCWXic5mbm2vMDPkx96tLKAHVHKjdjcWYDgA/132";
language = "zh_CN";
nickname = "\U5149\U5934\U5f3a2\U53f7";
openid = "oN702waxaalZ-1ycPtpfj0ALpbeg";
privilege = (
);
province = "";
sex = 0;
unionid = ofp95s1JJofVChMLEULM0H40iaEs;
}
交互流程
- 我们提供一个测试包名和证书(已上线的项目#为了能出广告#)
- 使用测试包名和证书出一个测试包--然后测试
- 测试完成后 换正式包名和证书出正式包上传苹果商店