下文介绍是基于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
复制到新建工程根目录下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]; }
解决方法:build setting搜索ENABLE_USER_SCRIPT_SANDBOXING,YES(默认)改成NO
下文介绍是基于SwiftUI
的快速接入方法,EffectOneSDK集成方式是基于Cocoapods的方式,其他方式请参考 EffectOneKit集成方式
打开Xcode,新建一个iOS App工程,语言选择SwiftUI
,例如工程名叫EffectOne-SwiftUI
(包名要跟申请EffectOneSDK时的包名保持一致,,资源和授权文件请使用从火山产解获取的)
基于SwiftUI集成的DemoSample获取SDK相关文件
暂时无法在飞书文档外展示此内容
EffectOne-SwiftUI
目录下的 EOExportUI 文件夹、 EOLocalResources.bundle 、EOExportUI.podspec、Podfile
复制到新建工程根目录下EffectOne-SwiftUI/EffectOneModule.swift
复制到新建工程目录下EffectOne-SwiftUI
替换成你自己的工程名pod install --repo-update
并 open EffectOne-SwiftUI.xcworkspace 打开工程.SDK依赖的特效道具、模型等文件是可以下发的,此处只涉及内置到app内的方式,其他方式参考EffectOne iOS 功能详解中资源导入与配置部分
将EOLocalResources.bundle
导入你的工程中,导入时注意选择"Create folder references",并且保证运行时该bundle直接在主bundle下,不要嵌套于其他文件下面
将EffectOneModule.swift
加入工程中
//是否允许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>//写出自己说明描述
var body: some View { func getKeyWindowRootViewController() -> UIViewController? { return UIApplication.shared.windows.first{ $0.isKeyWindow }?.rootViewController } lazy var pageVC : UIViewController = { let pageVC = getKeyWindowRootViewController()! return pageVC }() func _creatEffectOneModule() -> EffectOneModule { return EffectOneModule(parentVC: pageVC) } lazy var effectOneModule = _creatEffectOneModule() //开始鉴权 effectOneModule.makeAuth() return VStack { Button("Recorder") { effectOneModule.showRecorderViewController() } .padding(EdgeInsets(top: 0, leading: 0, bottom: 30, trailing: 0)) Button("Draft") { effectOneModule.showDraftViewController() } } .padding() }
EffectOneModule.swift
并将下列代码中字符串替换为"XXX.licbag"let authFileName : String = "XXX.licbag"
新建一个Button控件并在点击事件中调用如下代码启动基础编辑组件。
Button("Recorder") { effectOneModule.showRecorderViewController() }
新建一个Button控件并在点击事件中调用如下代码启动草稿页面。
```swift
Button("Draft") {
effectOneModule.showDraftViewController()
}
### 可能遇到问题 - 报错  解决方法:build setting搜索ENABLE\_USER\_SCRIPT\_SANDBOXING,YES(默认)改成NO  # Flutter ## [如何使用flutter集成iOS EffectOneSDK(Swift版)](https://axpqvx27gfb.feishu.cn/docx/GRuudTwymovMJKxsGBEcMt6ynTd) ## [如何使用flutter集成iOS EffectOneSDK(OC版)](https://axpqvx27gfb.feishu.cn/docx/F2WQds1oVoOb6XxHiCgcoG1anue) <br> # RN ## [如何使用React Native集成EffectOne](https://axpqvx27gfb.feishu.cn/docx/NvSSdCbyZoQcPxxMxtFcSkvInUb)