下文介绍是基于Objective-C
创建工程的快速接入方法,EffectOneSDK集成方式是基于Cocoapods的方式,其他方式请参考 EffectOneKit集成方式
打开xcode,新建一个iOS app工程,语言选择Objective-C
,例如工程名叫EffectOne-OC
(包名要跟申请EffectOneSDK时的包名保持一致,资源和授权文件请使用从火山产解获取的)
基于Objective-C集成的DemoSample中获取SDK相关文件
暂时无法在飞书文档外展示此内容
将 EffectOne-OC
目录下的 EOExportUI 文件夹、 EOExportUI.podspec、EOLocalResources.bundle 、Podfile
复制到新建工程根目录下
打开Podfile文件,修改成如下图这样,需要将EffectOne-OC
替换成你自己的工程名
命令行进入EffectOne-OC
工程podfile文件所在的目录,执行pod install --repo-update
并 open EffectOne-OC.xcworkspace
打开工程.
SDK依赖的特效道具、模型等文件是可以下发的,此处只涉及内置到app内的方式,其他方式参考EffectOne iOS 功能详解中资源导入与配置部分
将EOLocalResources.bundle
导入你的工程中,导入时注意选择"Create folder references",并且保证运行时该bundle直接在主bundle下,不要嵌套于其他文件下面
添加EffectOneModule
类,该类负责处理鉴权、拍摄以及进入草稿箱相关逻辑,你可以直接使用EffectOne-OC
demo中的EffectOneModule
类
//是否允许App访问您的媒体资料库
<key>NSAppleMusicUsageDescription</key>
<string>media</string>//写出自己说明描述
//是否允许App使用您的相机
<key>NSCameraUsageDescription</key>
<string>Camera</string>//写出自己说明描述
//是否允许App您的麦克风
<key>NSMicrophoneUsageDescription</key>
<string>mic</string>//写出自己说明描述
//是否允许App保存图片到手机
<key>NSPhotoLibraryAddUsageDescription</key>
<string>photo lib</string>//写出自己说明描述
//是否允许App您的相册
<key>NSPhotoLibraryUsageDescription</key>
<string>photo</string>//写出自己说明描述
EffectOneModule
文件修改(可直接使用基于Objective-C集成的demo中的EffectOneModule
文件)makeAuth
- (void)makeAuth {
__weak typeof(self) weakSelf = self;
EOAuthorizationConfig *config = [[EOAuthorizationConfig alloc] initWithBlock:^(EOAuthorizationConfigInitializer * _Nonnull initializer) {
initializer.isOnline = NO;
__strong typeof(self) strongSelf = weakSelf;
//设置离线证书所在的路径
initializer.licensePathForOffline = [[strongSelf localBundle] pathForResource:strongSelf.authFileName ofType:nil inDirectory:@"License"];
}];
//开始鉴权
[[EOAuthorization sharedInstance] makeAuthWithConfig:config completionHandler:^(BOOL success, NSString * _Nonnull errMsg) {
__strong typeof(self) strongSelf = weakSelf;
strongSelf.isAuthSucceeded = success;
if (!strongSelf.isAuthSucceeded) {
NSLog(@"%@",errMsg);
} else {
[EOSDK initSDK:^{
__strong typeof(self) strongSelf = weakSelf;
[EOSDK setResourceBaseDir:[EOSDK defaultResourceDir:[strongSelf localBundle].bundlePath]];
[EOSDK setResourceDefaultBuiltInConfig:[EOSDK defaultPanelConfigDir:[strongSelf localBundle].bundlePath]];
}];
}
}];
}
showRecorderViewController
- (void)showRecorderViewController {
if (!self.isAuthSucceeded) {
[self showToast:@"authority is failed!,please check it."];
return;
}
//构造拍摄组件默认配置
EORecorderConfig *config = [[EORecorderConfig alloc] initWithBlock:^(EORecorderConfigInitializer * _Nonnull initializer) {
}];
//显示拍摄页面
__weak typeof(self) weakSelf = self;
[EORecorderViewController startRecorderWithConfig:config presenter:self.parentVC delegate:self completion:^(NSError * _Nullable error) {
__strong typeof(self) strongSelf = weakSelf;
if (error && strongSelf.parentVC) {
[strongSelf showErrorAlertWithError:error presenter:strongSelf.parentVC];
}
}];
}
showDraftViewController
- (void)showDraftViewController {
if (!self.isAuthSucceeded) {
[self showToast:@"authority is failed!,please check it."];
return;
}
//显示草稿组件
[EODraftBoxController presentDraftVCDelegate:self];
}
- (EffectOneModule *)effectOneModule {
if (!_effectOneModule) {
_effectOneModule = [[EffectOneModule alloc] initWithParentVC:self];
}
return _effectOneModule;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//开启鉴权
[self.effectOneModule makeAuth];
[self.view addSubview:self.recorderButton];
[self.view addSubview:self.draftButton];
CGPoint recoderCenter = CGPointMake(self.view.center.x, self.view.center.y - 50);
self.recorderButton.frame = CGRectMake(0, 0, 120, 40);
self.recorderButton.center = recoderCenter;
self.draftButton.frame = CGRectMake(0, 0, 120, 40);
self.draftButton.center = CGPointMake(recoderCenter.x, recoderCenter.y + 50);
}
self.authFileName = @"XXX.licbag";
- (void)showRecorderViewController {
[self.effectOneModule showRecorderViewController];
}
新建一个Button控件并在点击事件中调用如下代码启动草稿页面。
- (void)showDraftViewController {
[self.effectOneModule showDraftViewController];
}
新建一个Button控件并在点击事件中调用如下代码启动草稿页面。
Button("Draft") {
effectOneModule.showDraftViewController()
}