Skip to content

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;
}