主题
CocosCreator接入指南
SDK iOS支持 iOS11 及以上版本,Android支持 Android6.0 API23 及以上版本
一、SDK 安装
1.1 SDK下载
前往下载最新版的Apptrace CocosCreator SDK。前往下载
1.2 SDK安装
iOS安装方式
把已下载好的插件包里的Package/iOS/路径下的ApptraceModule文件夹直接拷贝至项目中的native/engine/ios/文件夹里。并按照以下代码所示修改CMakeLists.txt文件
c
cmake_minimum_required(VERSION 3.8)
set(CMAKE_SYSTEM_NAME iOS)
set(APP_NAME "GameDemo" CACHE STRING "Project Name")
project(${APP_NAME} CXX)
set(CC_PROJECT_DIR ${CMAKE_CURRENT_LIST_DIR})
set(CC_UI_RESOURCES)
set(CC_PROJ_SOURCES)
set(CC_ASSET_FILES)
set(CC_COMMON_SOURCES)
set(CC_ALL_SOURCES)
include(${CC_PROJECT_DIR}/../common/CMakeLists.txt)
# 在这个位置添加自己的 OC 文件
list(APPEND CC_PROJ_SOURCES
${CMAKE_CURRENT_LIST_DIR}/ApptraceModule/ApptraceBridge.h
${CMAKE_CURRENT_LIST_DIR}/ApptraceModule/ApptraceBridge.m
${CMAKE_CURRENT_LIST_DIR}/ApptraceModule/ApptraceSDK/AppInfo.h
${CMAKE_CURRENT_LIST_DIR}/ApptraceModule/ApptraceSDK/Apptrace.h
)
# 添加静态库
set(APPTRACE_LIB ${CMAKE_CURRENT_LIST_DIR}/ApptraceModule/ApptraceSDK/libApptraceSDK.a)
set(EXECUTABLE_NAME ${APP_NAME}-mobile)
cc_ios_before_target(${EXECUTABLE_NAME})
add_executable(${EXECUTABLE_NAME} ${CC_ALL_SOURCES})
# 链接静态库
target_link_libraries(${EXECUTABLE_NAME} ${APPTRACE_LIB})
cc_ios_after_target(${EXECUTABLE_NAME})
Android安装方式
把已下载好的插件包里的Package/Android/路径下的ApptraceModule文件夹直接拷贝至项目中的native/engine/android/文件夹里。并按照以下代码所示配置native/engine/android/app/build.gradle 里的相关依赖即可。
groovy
sourceSets.main {
java.srcDirs "../src", "src"
java.srcDirs += "../ApptraceModule/src"
}
dependencies {
implementation fileTree(dir: '../ApptraceModule/libs', include: ['*.jar','*.aar'])
}
TypeScript安装方式
把已下载好的插件包里的Package/CocosCreator/路径下的Apptrace文件夹直接拷贝至项目中的assets/Plugins/文件夹里即可(如果没有Plugins文件夹,则需要新建一个)。
更多可参考CocosCreator官方文档
二、配置 appKey 和 SDK 初始化
请先从AppTrace控制台获取AppKey
Android和iOS均支持 2 种方式来进行 appKey 的配置,选择其中一种来配置即可
2.1 Android配置方式
- 找到项目的AndroidManifest.xml文件,在
<application>...</application>
中添加以下配置
html
<meta-data
android:name="cn.apptrace.APP_KEY"
android:value="AppTrace管理平台分配的key"/>
- 在项目中找到ApptraceBridge文件里的initSDK函数,通过configuration.setAppKey("AppTrace管理平台分配的key")语句来设置
java
configuration.setAppKey("AppTrace管理平台分配的key");
然后在项目中找到AppActivity类文件,按照下方所示分别在onCreate和onNewIntent函数中添加对应的代码
java
import cn.apptrace.cocos.ApptraceBridge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// DO OTHER INITIALIZATION BELOW
SDKWrapper.shared().init(this);
// ApptraceSDK相关调用
ApptraceBridge.initSDK(this, true);
ApptraceBridge.getWakeUp(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
SDKWrapper.shared().onNewIntent(intent);
// ApptraceSDK相关调用
ApptraceBridge.getWakeUp(intent);
}
2.2 iOS配置方式
- 在 Info.plist 文件中配置
html
<key>cn.apptrace.appKey</key>
<string>AppTrace管理平台分配的key</string>
- 在项目中找到ApptraceBridge文件里的startInit方法,通过初始化 Apptrace SDK 时的入参来设置
objectivec
[Apptrace initWithDelegate:self appKey:@"AppTrace管理平台分配的key"];
然后在项目中找到AppDelegate.mm类文件,按照下方所示添加对应的代码
objectivec
#import "ApptraceModule/ApptraceBridge.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[SDKWrapper shared] application:application didFinishLaunchingWithOptions:launchOptions];
appDelegateBridge = [[AppDelegateBridge alloc] init];
// Add the view controller's view to the window and display.
CGRect bounds = [[UIScreen mainScreen] bounds];
self.window = [[UIWindow alloc] initWithFrame:bounds];
// Should create view controller first, cc::Application will use it.
_viewController = [[ViewController alloc] init];
_viewController.view = [[View alloc] initWithFrame:bounds];
_viewController.view.contentScaleFactor = UIScreen.mainScreen.scale;
_viewController.view.multipleTouchEnabled = true;
[self.window setRootViewController:_viewController];
[self.window makeKeyAndVisible];
[appDelegateBridge application:application didFinishLaunchingWithOptions:launchOptions];
// 初始化ApptraceSDK
[ApptraceBridge startInit];
return YES;
}
三、功能集成
1、获取应用安装时携带的参数
在 APP 需要安装参数时(由 web 网页中传递过来的,如邀请码、游戏房间号等动态参数),调用 getInstall 函数,在回调中获取参数
typescript
import Apptrace from '../Plugins/Apptrace/Apptrace';
Apptrace.getInstall((appInfo: string) => {
log("get install result:" + appInfo);
});
2、获取一键拉起携带的参数
2.1 开启一键拉起功能
iOS开启
登录 AppTrace 的管理后台,找到 iOS 集成配置,开启相关功能,参考下图所示。其中 Team Id 可以在 Apple 开发者后台查看。
Android开启
登录 AppTrace 的管理后台,找到 Android 集成配置,开启相关功能,参考下图所示。
2.2 代码配置
iOS配置
开启 Associated Domains 服务
在 xcode 中所示位置配置 AppTrace 后台提供的关联域名
Android配置
找到项目中AndroidManifest.xml文件和需要被调起的Activity, 参考以下配置Scheme
html
<application android:debuggable="true" android:extractNativeLibs="true" android:allowBackup="true" android:label="@string/app_name" android:usesCleartextTraffic="true" android:icon="@mipmap/ic_launcher" android:resizeableActivity="true">
<meta-data android:name="android.app.lib_name" android:value="cocos"/>
<meta-data android:name="cn.apptrace.APP_KEY" android:value="AppTrace平台分配的appKey"/>
<activity android:name="com.cocos.game.AppActivity" android:screenOrientation="sensorLandscape" android:configChanges="orientation|keyboardHidden|screenSize|screenLayout|smallestScreenSize" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:launchMode="singleTask" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="AppTrace分配的Scheme"/>
</intent-filter>
</activity>
<activity android:name="com.cocos.lib.CocosEditBoxActivity" android:configChanges="orientation|keyboardHidden|screenSize|screenLayout|smallestScreenSize" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
</application>
2.3 代码集成
Android集成
java
public class AppActivity extends CocosActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// DO OTHER INITIALIZATION BELOW
SDKWrapper.shared().init(this);
ApptraceBridge.initSDK(this, true);
ApptraceBridge.getWakeUp(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
SDKWrapper.shared().onNewIntent(intent);
ApptraceBridge.getWakeUp(intent);
}
}
iOS集成
在AppDelegate.mm类中,添加以下代码
objectivec
// UniversalLink
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([ApptraceBridge handleUniversalLink:userActivity]) {
return YES;
}
return YES;
}