抖音开放平台Logo
开发者文档
控制台

iOS 接入
收藏
我的收藏

前提条件​

    推荐iOS 11.0 及以上版本;XCode 13.0 及以上版本。​
    注:抖音不再支持低版本iOS系统,iOS9.0系统 能使用的最新抖音版本为17.8,iOS10.0 能使用的最新抖音版本为23.0​
    获取 ClientKey:​
    a.请到开发者应用登记页面进行申请,申请后将获得 AppID。具体步骤请参见创建移动应用和网站应用。​
    b.通过 AppID 为应用申请相关的权限,如分享、授权、默认话题等。​
    c.审核通过后即可使用相关的功能。​

接入流程​

    1.集成 SDK。​
    通过 CocoaPods 集成(推荐)。​
    手动集成(不推荐)。​
    2.配置 SDK。​
    配置 URLScheme。​
    配置相册使用权限。​
    3.SDK 代码配置。​
    初始化以及 UIApplicationDelegate 部分。​
    获取日志信息。​

操作步骤​

第一步:集成 SDK​

可以通过 CocoaPods 集成 (推荐)或手动集成 (不推荐)两种方式集成 SDK。​

通过 CocoaPods 集成(推荐)​

    1.在工程的 Podfile 里面添加 SDK。​
pod 'DouyinOpenSDK'
    2.运行 pod install 命令安装 SDK。​
pod install --repo-update
运行 pod install 不会自动更新 repo,如果下载的不是最新版,可使用 pod install —repo-update 更新或先运行 pod repo update。​

手动集成(不推荐)​

    1.下载 SDK 包 DouyinOpenSDK(v4.1.17)。​
    2.集成 Framwork。在 XCode 13.0 版本上的具体操作步骤如下:​
    a.将解压后的 DouyinOpenSDK.framework 文件复制拖拽到工程文件夹中。​
    b.在左侧目录选中工程名,选择 「TARGETS」>「Build Phases」>「Link Binary With Libaries」 。​
    c.点击「+」按钮,在弹出的窗口中点击「Add Other」,选择工程目录下的 DouyinOpenSDK.framework 文件添加到工程中。​
    d.在左侧目录选中工程名,选择 「TARGETS」>「Build Phases」>「Link Binary With Libaries」 。​
    e.点击「+」按钮,在弹出的窗口中查找并选择下列所需的库,单击「Add」,将系统库文件添加到工程中。​
    i.WebKit.framework :SDK 内部采用 Web 授权时所使用。​
    ii.SystemConfiguration.framework :SDK 内部采用 Web 授权时所使用。​
    iii.Network.framework :SDK 内部采用 Web 授权时所使用。​
    iv.Security.framework:SDK 传递信息安全的加解密库。​
    f.在左侧目录选中工程名,然后选择「TARGETS」>「Build Settings」>「Other Linker Flags」 ,在「Other Linker Flags」 页面中添加-ObjC,字母 O 和 C 大写。​
    g.如果工程「TARGETS」>「Build Settings」里的Mach-O Typestatic library类型,则需要在「Other Linker Flags」 页面中添加-all_load。​

第二步:配置工程​

下列步骤是在 XCode 13.0 版本上的操作步骤。​
    1.配置 URLScheme在通过 CocoaPods 或手动将 SDK 引入工程之后,需要配置 app 与抖音短视频通讯的 URLScheme。​
    a.为了保证可以正常唤起抖音短视频,在「info」标签栏的 Custom iOS Target Properties中找到 LSApplicationQueriesSchemes 。如果没有,点击「+」添加一个并设置 Key 为LSApplicationQueriesSchemes,Value 类型为数组,将如下配置粘贴到数组中(在iOS15.0及以上版本,需要设置在前50位以内)。​
<key>LSApplicationQueriesSchemes</key> <array> <string>douyinopensdk</string> <string>douyinliteopensdk</string> <string>douyinsharesdk</string> <string>snssdk1128</string> </array>
    b.为了保证抖音短视频可以正常唤起你的App,在 Xcode 中,点击「TARGETS」,在「info」标签栏的最下面的 URL Types 的 URL Schemes 里面填入申请得到的 ClientKey 。在抖音短视频完成相关请求之后通过这个URL Schemes和你的App通信。​
    c.在「info」标签栏的「Custom iOS Target Properties」中点击「+」新加一项设置 Key 为DouyinAppID,value 为 String 类型,值为申请的 AppID。在 App 启动时会自动将配置同步到 SDK 中。DouyinAppID $ClientKey注意: 如果不想通过 Info.plist 的方式向 SDK 注册你的 Key,也可以按如下方式通过代码方式进行注册。[[DouyinOpenSDKApplicationDelegate sharedInstance] registerAppId:DouYinNewClientKey];如果你同时使用了两种设置方式,将按照 - [DouyinOpenSDKApplicationDelegate application: didFinishLaunchingWithOptions:]- [DouyinOpenSDKApplicationDelegate registerAppId:] 调用顺序进行覆盖,后者覆盖前者。​
    2.配置相册使用权限。分享的图片通过相册进行跨进程共享,如需使用分享功能,还需要填相册访问权限,在 info 标签栏中添加 Privacy - Photo Library Usage Description。注意:请务必保证正确填写你获得 ClientKey ,并保证和在网页上申请时所填写的 BundleID 和工程配置中的 BundleID 一致。

第三步:SDK 代码配置​

    1.初始化 AppDelegate / SceneDelegate 部分。​
    如果使用 SceneDelegate:​
#import <DouyinOpenSDK/DouyinOpenSDKApplicationDelegate.h> - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { // ... [[DouyinOpenSDKApplicationDelegate sharedInstance] application:nil didFinishLaunchingWithOptions:nil]; // ... } - (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts { // 示例代码 [[DouyinOpenSDKApplicationDelegate sharedInstance] application:nil openURL:URLContexts.allObjects.firstObject.URL.absoluteURL sourceApplication:nil annotation:nil]; }
    如果使用 AppDelegate:​
在 AppDelegate 中引入<DouyinOpenSDK/DouyinOpenSDKApplicationDelegate.h>头文件并在 app 启动、收到 Open URL 打开 app 时调用 SDK 进行处理。​
#import <DouyinOpenSDK/DouyinOpenSDKApplicationDelegate.h> @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[DouyinOpenSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; return YES; } - (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { if ([[DouyinOpenSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]] ) { return YES; } return NO; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { if ([[DouyinOpenSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation]) { return YES; } return NO; } - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { if ([[DouyinOpenSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:nil annotation:nil]) { return YES; } return NO; } @end
    1.获得日志信息。通过实现向 DouyinOpenSDKApplicationDelegate 注册 Log 的代理 DouyinOpenSDKLogDelegate 便可以通过 -id onLog 收到 SDK 内部的一些错误的或者警告信息。​
#import <DouyinOpenSDK/DouyinOpenSDKApplicationDelegate.h> @interface AppDelegate () <DouyinOpenSDKLogDelegate> #pragma mark - (void)registerLogDelegate { [DouyinOpenSDKApplicationDelegate sharedInstance].logDelegate =self; } #pragma mark - DouyinOpenSDKLogDelegate Delegate - (void)onLog:(NSString *)logInfo { //Process log } @end