demo address
链接:https://pan.baidu.com/s/1UQXXl0hp3IXJ4iD_LQdPEA 密码:2mb3
1. 将库文件添加到工程中
E4460FAC-0E3D-4CDE-8804-4A36F94DFB66.png(备注: 在文件系统中 include 文件夹下 有deps文件 需要删除头文件引用。)
2.添加所有的 .framework .a 文件 路径和头文件链接
(将文件拷贝到工程中 会自动台 target->build setting -> search path ->Header Search Paths 中添加)
特殊添加一项目录 路径
"$(SRCROOT)/Vigame/include"
"$(SRCROOT)/Vigame/tools"
"$(SRCROOT)/Vigame/include/deps/boost/include"
"$(SRCROOT)/Vigame/include/deps/curl/include/ios"
"$(SRCROOT)/Vigame/include/deps/openssl/include/ios"
"$(SRCROOT)/Vigame/include/deps/zlib/include/linux"
3.添加系统支持库文件
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
4. 设备编译选项
-ObjC
(Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数(或者方法)定义链接符号,它只为每个类创建链接符号。这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别中的方法时,出现"selector not recognized",也就是找不到方法定义的错误。为了解决这个问题,引入了-ObjC
标志,它的作用就是将静态库中所有的和对象相关的文件都加载进来。不过在64位的Mac系统或者iOS下,链接器有一个bug,会导致只包含有类别的静态库无法使用-ObjC来加载文件。变通方法是使用-all_load
或者-force_load标志,它们的作用都是加载静态库中所有文件,不过all_load
作用于所有的库,而-force_load
后面必须要指定具体的文件)
Enable Bitcode 设置为NO
00BD11F1-2C0E-4CC7-A148-25117CAA9693.png
( 官方API 描述 包得优化有关
Bitcode is an intermediate representationof a compiled program. Apps you upload to iTunes Connect that contain bitcodewill be compiled and linked on the App Store. Including bitcode will allowApple to re-optimize your app binary in the future without the need to submit anew version of your app to the store.
Bitcode. When you archive for submission tothe App Store, Xcode will compile your app into an intermediate representation.The App Store will then compile the bitcode down into the 64 or 32 bitexecutables as necessary.)
5 编译报错
__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
6 确认c++ 编译项
9CEB6BBF-3485-4E3E-BC22-BCAB635C9B2A.png7设置项目为自动内存管理
C6D1428C-8591-4E39-AD5E-6D21C349B6D2.png8 SDK初始化工作
1 导入头文件
2DD85CAF-A737-40A4-971B-A257018E3F57.png2 调用初始化入口文件
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
//you code here
[IOSLoader startLoaderLibrary];
return YES;
}
9 代码调用
1.通过广告位名称打开一个广告
#include "vigame_ad.h"
// 打开一个横幅广告
vigame::ad::ADManager::openAd("banner");
// 打开关闭横幅广告
vigame::ad::ADManager::closeAd("banner");
// 打开一个插屏广告
vigame::ad::ADManager::openAd("pause");
// 打开一个开屏广告
vigame::ad::ADManager::openAd("splash");
/*监听 某个视频广告位是否加载成功*/
vigame::ad::ADManager::addAdReadyChangedCallback("level_fail_mfzs", [=](bool isReady){
if (isReady) {
NSLog(@"level_fail_mfzs视频广告位 加载成功");
}
});
//手动检测广告是否加载成功
vigame::ad::ADManager::isAdReady("level_fail_mfzs");
// 打开一个视频广告 && 监听是否视频播放成功
vigame::ad::ADManager::openAd("level_fail_mfzs",[=](vigame::ad::ADSourceItem* adSourceItem, int result){
if (1 == result) {/*打开视频失败*/ }
else if( 0 == result){/*打开视频成功*/ }
});
// 在 appDelegate.mm 文件中 打开一个 唤醒游戏广告
- (void)applicationDidBecomeActive:(UIApplication *)application {
//打开一个唤醒广告
vigame::ad::ADManager::openAd("game_awaken");
}
2.添加自定义统计事件
//统计
#import "vigame_tj.h"
//方式1
vigame::tj::DataTJManager::event("eventName");
//方式2
vigame::tj::DataTJManager::event("eventName","value");
//方式3
std::unordered_map<std::string, std::string> map;
map.insert(std::make_pair("key1", "value1"));
map.insert(std::make_pair("key2", "value2"));
vigame::tj::DataTJManager::event("eventName", map);
// 导入支付头文件 发起支付
#import "pay/PayManager.h"
vigame::pay::PayManager::orderPay(154);
◀◀ 下面内容为工程参数配置信息 ▶▶
1.Buglg参数配置
在项目中VigameLibrary/Resource/VigameLibrary.plist
文件中
如果需要使用 bugly 跟踪上线项目用户问题反馈
1> 将IS_USED 设置成YES
2> 将 APP_ID 填入在bugly平台上申请的参数
2.统计相关的参数配置
image.png如果需要使用某家统计 需要将对应的 IS_USED 设置成YES
各家统计字段说明:
1> 谷歌统计
|—— IS_USED 是否使用google 统计
|—— Conversion_ID 统计使用到转换ID
|—— new_Conversion_Label 新增转化标签 (没有可以不用填写)
|—— retained_Conversion_Label 留存转化便签(没有可以不用填写)
|—— pay_Conversion_Label 支付转化标签 (没有可以不用填写)
2> dataEye统计
|—— IS_USED 是否使用dataEye 统计
|—— IS_Login_Mode 是否为登录模式
|—— Channel_ID 渠道ID (app store)
|—— AppID 统计AppID (dataEye平台申请)
|—— TrackingAppID 跟踪ID (dataEye平台申请)
3> 友盟统计
|—— IS_USED 是否使用友盟 统计
|—— NOT_GAME_SENCE 是否为游戏
|—— AppKey 统计ID (友盟平台申请)
3.广告配置
在项目中VigameLibrary/Resource/feedata_apple.xml
文件中
<?xml version="1.0" encoding="utf-8"?>
<data>
<!-- 项目的appid -->
<appid>16065</appid>
<!-- 项目的projectid -->
<prjid>999111</prjid>
</data>
appid,prjid 将由公司统一为每个游戏分配下发, 所有的广告信息将通过这些参数自动从网络上获取!
网友评论