跳转至

集成SDK

开始之前

以下 SDK 初始化和委托回调适用于 AppDelegate 和 SceneDelegate 两种生命周期,均保留在 AppDelegate 中。

初始化iOS SDK

导入依赖项

导入SohaSDK 并设置 SohaDelegate 以侦听SDK事件:

AppDelegate.h
#import <SohaSDK/SohaSDK.h>

@interface AppDelegate: UIResponder<UIApplicationDelegate,SohaDelegate>

@end

初始化SDK

启动 SDK。在 didFinishLaunchingWithOptions: 中,调用 startWithDelegate:application:launchOptions:language:

AppDelegate.m
@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [SohaKit startWithDelegate:self
                    application:[UIApplication sharedApplication]
                    launchOptions:launchOptions
                    language:@"vi"];

    // vi:越南语
    // zh:中文
    // en:英语
    // id:印尼语
    // th:泰语

    return YES;
}

@end

Danger

startWithDelegate 必须在 AppDelegate 中且只调用一次,使用 SceneDelegate 时也不例外。请勿在连接场景时再次初始化 SDK。

实现 SDK 事件

通过使用 SohaDelegate,您可以监听生命周期事件,例如登出时或购买状态。

-(void)sohaDidLogoutSuccess:(SohaUser *)user{
    // Called after logging out the current user
}

-(void)sohaDidDeleteAccountSuccess:(SohaUser *)user{
    // Called after successful user deletion
}

-(void)sohaDidPurchaseSuccess:(SohaTransaction *)transaction{
    // Called after successful completion of in-app purchase

}

-(void)sohaDidPurchaseFailed:(SohaTransaction *)transaction purchaseError:(NSString *)error{
    // Called after a failed in-app purchase
}

处理应用事件

请根据应用当前的生命周期选择对应情况。iOS SDK 27 的场景要求和提交期限请参见SceneDelegate。

情况 1:AppDelegate 生命周期

保留 AppDelegate 中现有的窗口配置,在 AppDelegate.m 中添加以下代码:

AppDelegate.m
- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    return [SohaKit application:app openURL:url options:options];
}

情况 2:SceneDelegate 生命周期

SDK 初始化和 SohaDelegate 回调仍保留在 AppDelegate 中,窗口由 SceneDelegate 管理。在 SceneDelegate.m 中添加以下代码:

SceneDelegate.m
#import <SohaSDK/SohaSDK.h>

- (void)scene:(UIScene *)scene
    openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
    [SohaKit openURLContexts:URLContexts];
}

如果应用尚未配置 SceneDelegate,请按照SceneDelegate完成场景和窗口配置。

推送通知

确保在签名和能力中启用了 Push Notifications。

注册远程通知

在启动时或应用流程中合适的时机调用:

[SohaKit requestPushNotification];

此方法负责注册远程推送通知,并在内部处理通知中心的委托。

转发 APNs 设备令牌

在 AppDelegate.m 中实现 application:didRegisterForRemoteNotificationsWithDeviceToken:,并将 APNs 设备令牌传递给 SDK。即使使用 SceneDelegate,也应将此回调保留在 AppDelegate 中。

AppDelegate.m
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [SohaKit registerDeviceToken:deviceToken];
}

更改 SDK 语言

当应用程序更改语言时,请使用以下方法更新 SDK 语言:

[SohaKit setLanguage:@"vi"];

// vi:越南语
// zh:中文
// en:英语
// id:印尼语
// th:泰语

显示应用内评分弹窗(Rate App)

如需显示 App Store 应用内评分弹窗,请调用以下方法(可在任意线程调用):

[SohaKit requestReview];