跳到主要内容

SDK配置

1、SDK文件导入

拷贝SDK文件,包含SDK主体文件(DHSDK)和渠道文件(Channel),放入到工程目录下

然后打开工程,点击选中需要添加SDK文件的上层目录,在菜单->File->Add files to “Project name(工程名称)”,打开文件添加界面

打开文件添加界面,选中SDK文件,选项设置为 Create groups,最后点击添加,就可以把SDK添加到工程中了

添加到工程后效果如下

2、添加系统库

打开工程,在Target->Build Phases->Link Binary With Libraries中添加需要依赖的系统库,可以点击模块左下角的+号键来搜索添加

警告

WebKit.framework,JavaScriptCore.framework,CoreSpotlight.framework,UserNotifications.framework,SafariServices.framework,AdServices.framework的status需要选择Optional,否则在一些操作系统版本中会崩溃)

具体需要添加的系统库如下

libz.1.2.8.tbd
libz.1.2.5.tbd
libstdc++.6.tbd
GameController.framework
WatchConnectivity.framework
AdServices.framework
libresolv.9.tbd
Photos.framework
PhotosUI.framework
CoreMedia.framework
JavaScriptCore.framework
WebKit.framework
CoreSpotlight.framework
UserNotifications.framework
libresolv.tbd
libxml2.tbd
MediaPlayer.framework
Accelerate.framework
AudioToolbox.framework
CoreMotion.framework
EventKit.framework
GLKit.framework
Social.framework
libiconv.tbd
SafariServices.framework
CoreData.framework
StoreKit.framework
GameKit.framework
AdSupport.framework
iAd.framework
MobileCoreServices.framework
AssetsLibrary.framework
CoreGraphics.framework
MessageUI.framework
UIKit.framework
QuartzCore.framework
CoreText.framework
SystemConfiguration.framework
CoreTelephony.framework
libsqlite3.tbd
libz.tbd
Security.framework
QuickLook.framework
CoreLocation.framework
ImageIO.framework
Foundation.framework
CFNetwork.framework
AVFoundation.framework
libicucore.tbd
libc++.tbd
AppTrackingTransparency.framework
IOKit.framework

3、Other Linker Flags 配置

在Target->Build Settings 中的Other Linker Flags中添加-ObjC, -fobjc-arc, -lz.如下图

4、Compile Sources 配置

在Target->Build Phases->Compile Sources中将部分源文件设置Compiler Flags,例如

SFHFKeychainUtils.m -fobjc-arc

UIView+DHToast.m -fobjc-arc

MBProgressHUD.m -fobjc-arc

如下图

信息

具体源文件会根据项目需求变化,一般SDK文件导入到工程后会自动显示,如果某些文件没有的话就不需要配置了

5、Apple Capabilities配置

信息

添加例如Sign in with Apple,Universal Link后,Apple后台的包名和证书也需要更新,否则会编译报错。

警告

Sign in with Apple功能接入需要XCode版本至少大于11才行,否则会报错。

在Xcode工程的Target->Signing&Capabilities中,点击+Capabilitity 17m3new.jpg

添加Associated Domains模块(仅国内需要配置)

添加后,在里面填写Universal Link 地址参数示例:applinks:sdk-config.com 17m32new.jpg

点击+Capability,选择Sign in with Apple选项

添加后最终效果如下

17m33new.jpg

点击+Capability,选择GameCenter选项(仅海外需要配置)

图片.png

6、General配置

信息

只有当导入的SDK中包含NaverThirdPartyLogin.framework时才需要配置,一般只有海外SDK包含。

在Traget->General->Frameworks,Libiaries,and Embedded Content中,将新增的 NaverThirdPartyLogin.framework的Embed改为Embed&Sign,如下

7、SDK配置参数

找到SDK的配置文件(DHUnionConfigure.plist),进行相应参数配置(一般SDK提供时,参数都会配置好)如果还有需要更新的可以参考以下这些配置。

具体内容如下

image1.png

信息

以上参数仅为参考,该配置表具体参数会因项目需求不同而变化,以SDK提供的配置表参数为主

8、工程Info.plist配置

配置Xcode工程属性列表Info.plit ,具体名称可能会随着工程变化,以plist为后缀

具体内容如下(以国内基础配置为例)

1、 APPID

应用在苹果iTunes Connect 后台应用商店中的Apple ID,一般为一串数字

2、 CHANNEL_LABEL

渠道标签,海外填写foreign,国内填写global

3、 Facebook参数(如果有用到facebook登录)

FacebookAppID:facebook后台配置的APPID

FacebookDisplayName:facebook后台配置的name FacebookClientToken:facebook后台配置的token

4、 LSApplicationQueriesSchemes

应用白名单,用于允许跳转白名单中的其它应用,具体可参考demo中的info.plist文件

5、 App Transport Security Settings

应用传输安全设置,用于允许应用中的http访问,具体参考demo

6、 Privacy

相机使用权限申请,相册使用权限申请等

7、 URL types

应用URL设置,用于进行应用间跳转识别,具体可参考demo

DH:dh+SDK分配的APPID

QQ:tencent+QQ后台分配的ID

微信:微信后台分配的Key

微博:微博后台分配的Key 具体参数可以参考demo中的info.plist文

facebook:fb+FacebookAppId 等等

信息

具体参数可以参考demo中的info.plist文件,一般SDK提供的时候demo都会配置好,按照demo来配置到APP工程中

9、工程AppDelegate配置

在工程的AppDelegate.m文件中进行SDK的基础设置,用于处理初始化,激活,登录等相关

在 AppDelegate.m文件中,导入 DHUnionSDK.h,DHUnionDelegate.h,DHUnonConfig.h头文件

信息

如果是Unity工程,则在UnityAppController.m文件中

#import "DHUnionSDK.h"
#import "DHUnionDelegate.h"
#import "DHUnonConfig.h"

然后在以下回调中进行配置

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//初始化SDK,必须
[DHUnionSDK initUnionSDK:^(int type, BOOL result) {
if(result){
//init success
NSLog(@"DHUnionSDk init success");
//设置SDK区域 0:海外 1:国内
[DHUnionSDK configureSDKArea:1];
//设置SDK语言
[DHUnionSDK configureSDKLanguage:DHUnionLanguageTypeZH_CN];
//配置SDK
DHUnionConfig *config = [[DHUnionConfig alloc] init];
//请在正式打包上线时设为NO,否则会调用测试的登录地址
config.isDebug = NO;
[DHUnionSDK configureUnionSDK:config];
//部分其它SDK初始化
[DHUnionSDK application:application didFinishLaunchingWithOptions:launchOptions];

}
else{
//init failed
NSLog(@"DHUnionSDk init failed");
}
}];
return YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[DHUnionSDK didEnterBackground:application];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
[DHUnionSDK willEnterForeground:application];
}
 (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
//必须添加
[DHUnionSDK applicationDidBecomeActive:application];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
if ([[UIDevice currentDevice].systemVersion floatValue]>=14.0) {
//iOS 14
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
if(status == ATTrackingManagerAuthorizationStatusAuthorized){

}

}];
} else {

}
});

}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options
{
[DHUnionSDK handleApplication:application openURL:url options:options];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
[DHUnionSDK HandleOpenUrl:url application:application sourceApplication:sourceApplication annotation:annotation];
return YES;
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
[DHUnionSDK dhApplication:application continueUseactivity:userActivity options:nil];
return YES;
}