生命周期与初始化
应用生命周期
- Android
- iOS
在 Application 的启动回调中调用对应的 Combo SDK API,完成基础组件初始化、配置读取和模块加载。
onApplicationCreate
在 Application.onCreate() 中调用该 API,初始化 SDK 的本地存储、语言和 Activity 管理,读取配置并加载模块。
fun onApplicationCreate(application: Application)
请求参数
| Properties | Type | Required | Description |
|---|---|---|---|
application | Application | true | 当前应用的 Application 实例。 |
示例代码
Show Code
class App : Application() {
override fun onCreate() {
super.onCreate()
ComboSDK.onApplicationCreate(this)
}
}
在 AppDelegate 的启动和 URL 回调中调用对应的 Combo SDK API,完成配置读取、模块加载及回调转发。
didFinishLaunching
在 AppDelegate 的 application:didFinishLaunchingWithOptions: 中调用该 API,读取 ComboSDK.json、应用 UI 主题、加载模块,并向模块转发启动参数。该步骤必须在调用 start 之前完成。
static func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?)
请求参数
| Properties | Type | Required | Description |
|---|---|---|---|
application | UIApplication | true | 当前 UIApplication 实例。 |
launchOptions | [UIApplication.LaunchOptionsKey: Any] | false | 启动选项字典。 类型说明: UIApplication.LaunchOptionsKey。 |
示例代码
Show Code
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ComboSDK application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}
openURL
在 AppDelegate 的 application:openURL:options: 中调用该 API,将 URL 和相关参数转发给已集成的模块。例如,BDASignal 使用该回调解析广告投放 Deep Link 的点击信息。
static func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any])
请求参数
| Properties | Type | Required | Description |
|---|---|---|---|
app | UIApplication | true | 当前 UIApplication 实例。 |
url | URL | true | 要打开的 URL。 |
options | [UIApplication.OpenURLOptionsKey: Any] | true | 打开 URL 的选项字典。 类型说明: UIApplication.OpenURLOptionsKey。 |
示例代码
Show Code
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[ComboSDK application:app open:url options:options];
return YES;
}
初始化
Combo SDK 所有 API 都以 ComboSDK 类的静态方法形式提供。
- 在 Android,需导入
com.seayoo.sdk.api.ComboSDK才能使用。 - 在 iOS,需导入
<ComboSDK/ComboSDK-Swift.h>才能使用。
完成上述应用启动生命周期接入后,调用 start API,传入 Game ID、Publishable Key 和 Endpoint 等参数,初始化 Combo SDK。调用登录、内购等业务 API 前,必须先调用 start。
- Android
- iOS
由于 SDK 会采集用户数据,仅在用户同意隐私政策之后调用该接口。
fun start(activity: Activity, options: StartOptions)
请求参数
| Properties | Type | Required | Description |
|---|---|---|---|
activity | Activity | true | 当前 Activity。 |
options | StartOptions | true | 初始化参数集。 |
示例代码
Show Code
val startOptions = StartOptions(
gameId = "gameId",
publishableKey = "pk_xxxxxx",
endpoint = "https://api.seayoo.com"
)
ComboSDK.start(this, startOptions)
完成所需的隐私同意流程并准备好视图控制器后,调用该 API。启动生命周期中的配置加载与 start 初始化是两个步骤,均需接入,参见 初始化流程示例。
static func start(controller: UIViewController, options: StartOptions)
请求参数
| Properties | Type | Required | Description |
|---|---|---|---|
controller | UIViewController | true | 当前视图控制器。 |
options | StartOptions | true | 启动参数集。 |
示例代码
Show Code
StartOptions *options = [[StartOptions alloc] initWithGameId:@"gameId" publishableKey:@"pk_xxxx" endpoint:@"https://api.seayoo.com"];
[ComboSDK startWithController: controller options: options];
StartOptions
| Properties | Type | Required | Description |
|---|---|---|---|
gameId | String | true | Combo 分配的游戏唯一标识。 |
publishableKey | String | true | Combo 分配的 Publishable Key。 |
endpoint | String | true | Combo 提供的外部 API 端点(HTTPS URL)。 |
初始化流程示例
- Android
- iOS
Show Code
class App : Application() {
override fun onCreate() {
super.onCreate()
ComboSDK.onApplicationCreate(this)
}
}
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val startOptions = StartOptions(
gameId = "YOUR_GAME_ID",
publishableKey = "pk_xxxxxx",
endpoint = "https://api.seayoo.com"
)
// 用户同意隐私政策后立即调用
ComboSDK.start(this, startOptions)
}
}
以下为流程示意,用户已完成隐私合规 需替换为应用自己的判断逻辑。
Show Code
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ComboSDK application:application didFinishLaunchingWithOptions:launchOptions];
if (用户已完成隐私合规) {
StartOptions *options = [[StartOptions alloc] initWithGameId:@"gameId" publishableKey:@"pk_xxxx" endpoint:@"https://api.seayoo.com"];
UIViewController *controller = [[UIViewController alloc] init];
_keyWindow = [[UIWindow alloc] init];
_keyWindow.rootViewController = controller;
[_keyWindow makeKeyAndVisible];
[ComboSDK startWithController:controller options:options];
} else {
// 展示隐私合规界面,按照相关隐私法规引导用户完成同意流程。
}
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[ComboSDK application:app open:url options:options];
return YES;
}
如需社交分享,还需转发 分享相关生命周期回调。