iOS
통합 준비
1. Demo 패키지를 다운로드한 후 압축을 해제하고
demo/XiaoShiPin/
디렉터리의 xmagickit 폴더를 프로젝트의 Podfile 디렉터리에 복사합니다.2. Podfile에 다음 종속성을 추가하고
pod install
을 실행하여 가져오기를 완료합니다.pod 'xmagickit', :path => 'xmagickit/xmagickit.podspec'
3. Bundle ID를 신청한 테스트 인증과 동일하게 수정합니다.
개발자 환경 요구 사항
Xcode 11 이상: App Store 또는 여기에서 다운로드하십시오.
권장 실행 환경:
기기 사양: iPhone 5 이상. iPhone 6 이하의 경우 전면 카메라는 720p까지 지원하며 1080p는 지원되지 않습니다.
시스템 요구 사항: iOS 12.0 이상.
SDK API 통합
1단계: 인증 초기화
AppDelegate
의 didFinishLaunchingWithOptions
에 다음 인증 코드를 추가합니다. Tencent Cloud 웹사이트에서 얻은 인증 정보에 따라 LicenseURL
및 LicenseKey
를 설정합니다(XMagic SDK 버전은 2.5.1 이전, TELicenseCheck.h
는 XMagic.framework
에; XMagicSDK 버전은 2.5.1 이상, TELicenseCheck.h
는 YTCommonXMagic.framework
에 있음).[TXUGCBase setLicenceURL:LicenseURL key:LicenseKey];[TELicenseCheck setTELicense:LicenseURLkey:LicenseKey completion:^(NSInteger authresult, NSString * _Nonnull errorMsg) {if (authresult == TELicenseCheckOk) {NSLog(@"인증 성공");} else {NSLog(@"인증 실패");}}];
errorCode 인증 설명:
에러 코드 | 설명 |
0 | 성공. Success |
-1 | 입력 매개변수가 유효하지 않습니다. 예를 들어 URL 또는 KEY가 비어 있습니다. |
-3 | 다운로드에 실패했습니다. 네트워크 설정을 확인하십시오. |
-4 | 로컬 시스템에서 읽은 TE SDK 인증 정보가 비어 있으며 I/O 오류로 인해 발생할 수 있습니다 |
-5 | 읽은 VCUBE TEMP License 파일의 내용이 비어 있으며 I/O 오류로 인해 발생할 수 있습니다 |
-6 | v_cube.license 파일의 JSON 필드가 올바르지 않습니다. 도움이 필요하면 Tencent Cloud에 문의하십시오. |
-7 | 서명 인증에 실패했습니다. 도움이 필요하면 Tencent Cloud에 문의하십시오. |
-8 | 복호화에 실패했습니다. 도움이 필요하면 Tencent Cloud에 문의하십시오. |
-9 | TELicense 필드의 JSON 필드가 올바르지 않습니다. 도움이 필요한 경우 Tencent Cloud에 문의하십시오. |
-10 | 네트워크에서 리졸브된 TE 인증 정보가 비어 있습니다. 도움이 필요한 경우 Tencent Cloud에 문의하십시오. |
-11 | IO 실패로 인해 TE SDK 인증 정보를 로컬 파일에 쓰지 못했습니다 |
-12
<td>다운로드에 실패했으며 로컬 asset을 파싱하지 못했습니다 | -13 |
인증 실패 | 기타 |
도움이 필요하면 Tencent Cloud에 문의하십시오 | 2단계: SDK 소재 리소스 경로 설정 |
CGSize previewSize = [self getPreviewSizeByResolution:self.currentPreviewResolution];
NSString *beautyConfigPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];beautyConfigPath = [beautyConfigPath stringByAppendingPathComponent:@"beauty_config.json"];NSFileManager *localFileManager=[[NSFileManager alloc] init];BOOL isDir = YES;NSDictionary * beautyConfigJson = @{};if ([localFileManager fileExistsAtPath:beautyConfigPath isDirectory:&isDir] && !isDir) {NSString *beautyConfigJsonStr = [NSString stringWithContentsOfFile:beautyConfigPath encoding:NSUTF8StringEncoding error:nil];NSError *jsonError;NSData *objectData = [beautyConfigJsonStr dataUsingEncoding:NSUTF8StringEncoding];beautyConfigJson = [NSJSONSerialization JSONObjectWithData:objectDataoptions:NSJSONReadingMutableContainerserror:&jsonError];}NSDictionary *assetsDict = @{@"core_name":@"LightCore.bundle",@"root_path":[[NSBundle mainBundle] bundlePath],@"tnn_"@"beauty_config":beautyConfigJson};// Init beauty kitself.beautyKit = [[XMagic alloc] initWithRenderSize:previewSize assetsDict:assetsDict];### 3단계: 로그 및 이벤트 리스너 추가
// Register log
[self.beautyKit registerSDKEventListener:self];[self.beautyKit registerLoggerListener:self withDefaultLevel:YT_SDK_ERROR_LEVEL];### 4단계: 뷰티 필터 효과 구성
- (int)configPropertyWithType:(NSString _Nonnull)propertyType withName:(NSString _Nonnull)propertyName withData:(NSString*_Nonnull)propertyValue withExtraInfo:(id _Nullable)extraInfo;
### 5단계: 비디오 렌더링
UGSV 사전 처리 프레임 콜백 인터페이스에서 YTProcessInput을 구성하고 textureId를 SDK에 전달하여 렌더링합니다.
[self.xMagicKit process:inputCPU withOrigin:YtLightImageOriginTopLeft withOrientation:YtLightCameraRotation0]
### 6단계: SDK 일시 중지/재개
[self.beautyKit onPause];
[self.beautyKit onResume];### 7단계: 레이아웃에 SDK 뷰티 필터 패널 추가
UIEdgeInsets gSafeInset;
#if __IPHONE_11_0 && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0if(gSafeInset.bottom > 0){}if (@available(iOS 11.0, *)) {gSafeInset = [UIApplication sharedApplication].keyWindow.safeAreaInsets;} else#endif{gSafeInset = UIEdgeInsetsZero;}dispatch_async(dispatch_get_main_queue(), ^{//뷰티 필터 옵션 UI_vBeauty = [[BeautyView alloc] init];[self.view addSubview:_vBeauty];[_vBeauty mas_makeConstraints:^(MASConstraintMaker *make) {make.width.mas_equalTo(self.view);make.centerX.mas_equalTo(self.view);make.height.mas_equalTo(254);if(gSafeInset.bottom > 0.0){ // 전체 화면으로 조정make.bottom.mas_equalTo(self.view.mas_bottom).mas_offset(0);} else {make.bottom.mas_equalTo(self.view.mas_bottom).mas_offset(-10);}}];_vBeauty.hidden = YES;});
- 통합 준비
- SDK API 통합
- 1단계: 인증 초기화
- CGSize previewSize = [self getPreviewSizeByResolution:self.currentPreviewResolution];
- // Register log
- - (int)configPropertyWithType:(NSString _Nonnull)propertyType withName:(NSString _Nonnull)propertyName withData:(NSString*_Nonnull)propertyValue withExtraInfo:(id _Nullable)extraInfo;
- UGSV 사전 처리 프레임 콜백 인터페이스에서 YTProcessInput을 구성하고 textureId를 SDK에 전달하여 렌더링합니다.
- [self.beautyKit onPause];
- UIEdgeInsets gSafeInset;