01. iOS 개발 가이드
준비사항
HONE Smart Platform의 iOS Client를 적용하기 위해서는 다음과 같은 개발 도구 및 요구 조건을 만족해야 하며 개발 환경에 맞게 설정되어야 한다.
개발도구
- Xcode
- 10.2 이상
- iOS SDK
- 12.2 이상
Operating System
- Mac OS X 10.11.5 or later (x86 only)
프로젝트 생성
1. Xcode 구동 후 Create New Project 혹은 File → New → Project 를 선택하여 신규 프로젝트 생성
2. Template → iOS → App 선택
3. 프로젝트명과 소속명 등 정보 입력 후 Next 버튼 클릭
→ 프로젝트 언어 설정(Swift or Objective-C)
시작화면 지정
HONE Smart Platform에서 제공하는 화면을 설정하기 위해 아래와 같이 수정한다.
1. 기본 시작화면 설정 및 파일 삭제
1-1. SceneDelegate 삭제
1-2. info.plist에서 Application Scene Manifest 삭제
2. Appdelegate 수정
AppDelegate 파일을 아래와 같이 수정한다.
2-1. configurationForConnecting, didDiscardSceneSessions 메소드 삭제
SceneDelegate 삭제를 위해 AppDelegate 내 아래 두 기본 메소드를 삭제한다.
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
}
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
}
- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
}
2-2. UIWindow property 추가
2-3. didFinishLaunchingWithOptions 에 아래 코드 추가
HMPWindowManager.shared()
HMPAppDelegateManager.shared().didFinishLaunching(completion: {
}, failure: { error in
})
DispatchQueue.main.async(execute: {
HMPAppDelegateManager.shared().completedSplash()
})
return true
}
{
[HMPWindowManager sharedWindowManager];
[[HMPAppDelegateManager sharedAppDelegateManager] didFinishLaunchingWithCompletion:^{
// actionflow 종료 시점
} failure:^(NSError *error) {
// actionflow 오류 콜백
}];
[[HMPAppDelegateManager sharedAppDelegateManager] completedSplash];
}
HSP Frameworks setting
필수 SDK Settings
Dynamic Type으로 빌드 된 프레임워크 이기 때문에 프로젝트의 Build Phase 탭 속성에 Embed Frameworks를 설정 해야 한다.
- Project 선택
- Build Phase 선택
- Embed Frameworks에 + 버튼 (Add items) 선택
- CoreInterfaceSDK.framework, HoneSmartPluginSDK.framework, HoneSmartUtilSDK.framework, HoneSmartPermissionSDK.framework, HoneSmartSDK.framework 선택
- bundle 추가
- Add 선택
또한, Project → Build Setting 에서 경로를 설정해준다.
- Project 선택
- Build Setting 선택
- Framework Search Paths 항목 선택
다음의 경로를 입력한다.
$(SRCROOT)/../ThirdLibs/CoreInterfaceSDK
$(SRCROOT)/../ThirdLibs/HoneSmartPluginSDK
$(SRCROOT)/../ThirdLibs/HoneSmartPermissionSDK
$(SRCROOT)/../ThirdLibs/HoneSmartSDK
Embed & Sign 안 해 줄 경우 아래와 같은 에러가 나타난다.
제공 라이브러리
HONE Smart Platform은 고객사의 편의를 위해 일부 기능들을 선 개발하여 제공 하고 있으며 그 항목은 아래와 같다.
Library Name | Remark | Version | M/O |
---|---|---|---|
HoneSmartSDK | HSP 기본 라이브러리 | ▲4.2.8 | M |
CoreInterfaceSDK | HSP와 라이브러리간 연동용 인터페이스 라이브러리 | ▲4.2.8 | M |
HoneSmartPluginSDK | HSP Plug-in 인터페이스 라이브러리 | ▲4.2.8 | M |
HoneSmartPermissionSDK | HSP 권한 라이브러리 | ▲4.2.8 | M |
HoneSmartUtilSDK | HSP 공용 유틸 라이브러리 | ▲4.2.8 | M |
HoneSmartAppLinkerSDK | 앱 링크 라이브러리 | ▲4.2.8 | O |
HoneSmartBacodeSDK | Barcode 라이브러리 | ▲4.2.8 | O |
HoneSmartCrashReportSDK | 비정상 종료 및 예외 수집 라이브러리 | ▲4.7.15 | O |
HoneSmartClipboardSDK | 클립보드 라이브러리 | ▲4.2.8 | O |
HoneSmartFingerSDK | 지문인식 라이브러리 | ▲4.2.8 | O |
HoneSmartFlashlightSDK | 플래시 라이브러리 | ▲4.2.8 | O |
HoneSmartGallerySDK | 갤러리 라이브러리 | ▲4.2.8 | O |
HoneSmartLockScreenSDK | 잠금화면 라이브러리 | ▲4.2.8 | O |
HoneSmartLogSDK | 로그 라이브러리 | ▲4.2.8 | O |
HoneSmartMotionSDK | 모션 라이브러리 | ▲4.2.8 | O |
HoneSmartNoticeSDK | 공지사항 라이브러리 | ▲4.2.8 | O |
HoneSmartScreenSDK | 화면 제어 라이브러리 | ▲4.2.8 | O |
HoneSmartSecureSDK | 암호화 DB 라이브러리 | ▲4.2.8 | O |
HoneSmartVibratorSDK | 단말 진동 라이브러리 | ▲4.2.8 | O |
HoneSmartMonitoringSDK | 앱 크래시 모니터링 라이브러리 | ▲4.2.8 | O |
HoneSmartOpenAPISDK | Open API 지원 라이브러리 | ▲4.2.8 | O |
HoneSmartBeaconSDK | 비콘 라이브러리 | ▲4.2.8 | O |
HoneSmartNfcSDK | NFC 라이브러리 | ▲4.2.8 | O |
configuration 파일 생성
HONE Smart Platform 은 프로젝트 내에 환경 정보를 가지는 json 파일을 두고 초기화 시 이를 읽어 화면을 구성한다.
따라서, 프로젝트 내 아래의 파일들을 생성해 두어야 한다. 샘플 프로젝트에 안에 있는 json 파일을 참고하여 작성한다.
- preConfiguration.json
- configuration.json
- actionflow.json
- plugin.json
- window.json
각각의 config 와 관련된 json 파일의 세부 속성은 2.Configuration Data 항목을 참조하여 생성하면 된다.
Build Setting
prefixheader 파일 생성
1. Project 우클릭 후 New File 메뉴 선택
2. PCH File 선택 후 Next 버튼 선택
3. PrefixHeader 입력
4. Project → Build Setting → Prefix Header 항목 선택 후 다음의 경로를 입력
5. PrefixHeader.pch 파일에 아래 헤더 파일 import
#import <UIKit/UIKit.h>
#import <HoneSmartSDK/HoneSmartSDK.h>
Bridging-Header 파일 생성
Swift 프로젝트에서 Objective-C library 사용을 위해 아래와 같이 프로젝트를 설정한다.
1. 브릿지 헤더 파일(AppName-Bridging-Header.h) 추가
2. 브릿지 헤더 파일 경로 추가
'Project - Target - Build Settings - Objective-C Bridging Header' 에 파일의 위치/AppName-Bridging-Header.h 추가
3. 사용할 Objective-C library를 브릿지 헤더에 import
4. 라이브러리 사용하기
→ HMP 라이브러리를 상속받는 클래스 앞에 @objc(클래스명) 어노테이션(Annotation)을 필수로 선언
BitCode 설정
- Project 선택
- Build Setting 선택
- Enable Bitcode 항목 선택
- No로 변경
Info.plist 설정
프로젝트의 Info 탭 속성 설정
- Project 선택
- Info 선택
다음의 속성을 설정한다.
Privacy - Location Always Usage Description 추가
Privacy - Contacts Usage Description 추가
Privacy - Photo Library Usage Description 추가
Privacy - Photo Library Additions Usage Description 추가 (iOS11 이상)
Privacy - Camera Usage Description 추가
Privacy - Location Usage Description 추가
Privacy - Face ID Usage Description 추가
Privacy - NFC Scan Usage Description 추가
App Transport Security Settings 추가
- App Transport Security Settings 확장 후 Allow Arbitrary Loads YES 설정
기타 설정
Localization 설정
다국어 지원을 위해 아래와 같이 프로젝트를 설정한다.
1. Localization 추가
PROJECT → Info → Localization → “ + ” 클릭 → Korean (ko) 선택
2. Localization을 적용할 파일 선택 후 Finish 클릭
3. Info → Localization 에서 Korean 적용되었음을 확인
Web Inspector 설정
1. Safari 설정
Safari → 설정 → 고급 → ‘웹 개발자를 위한 기능 보기’ 체크
2. 단말기 설정(단말기 테스트인 경우)
디바이스 → 설정 → Safari → 고급 → 웹 인스펙터 활성화
3. 프로젝트 빌드 후 Safari 실행 및 디버깅 수행
Safari → 개발자용 → 테스트 기기 → 웹뷰
클릭 후 나온 Safari 웹 인스펙터로 소스 → 웹 디버깅 수행