IOS 클라이언트 SDK를 사용하여 Swift 애플리케이션 쓰기

IOS 클라이언트 SDK와 Swift 및 Objective-C 프로그래밍 언어를 사용하여 iOS 모바일 애플리케이션을 개발합니다.

Xcode IDE 사용:

  1. 연결 헤더 파일을 추가합니다.
  2. SDK 헤더 파일 및 라이브러리를 추가합니다.
  3. Objective-C 링커 플래그를 추가합니다.
  4. Xcode의 기타 iOS 프로젝트와 마찬가지로 iOS 클라이언트 SDK를 사용하여 애플리케이션을 컴파일하고 링크합니다. Swift와 함께 SDK를 사용하면 Objective-C를 사용하는 것과 동일한 종속성이 모두 제공됩니다.

Bridging 헤더 파일 추가

Swift 앱이 호출하는 Objective-C 공용 클래스의 헤더 파일을 가져오려면 브리징 헤더 파일을 사용해야 합니다. Oracle Mobile Hub 클라이언트 SDK의 사용 가능한 모든 공용 클래스는 SDK의 include 폴더에서 찾을 수 있습니다.

Xcode에서 연결 헤더 파일을 생성하려면 다음과 같이 하십시오.

  1. 파일 > 새로 만들기... > 파일 을 선택한 다음 iOS/소스에서 .h 아이콘을 사용하여 헤더 파일을 선택합니다. 선택하는 이름으로 연결 헤더 파일에 권한을 부여할 수 있습니다.
    앱에서 사용하는 SDK 클래스에 따라 콘텐츠는 다음과 같이 표시되어야 합니다.
    #ifndef GettingStartedSwift_Bridging_Header_h
    #define GettingStartedSwift_Bridging_Header_h
    
    #import "OMCCore.h"
    #import "OMCAuthorization.h"
    #import "OMCMobileBackend.h"
    #import "OMCMobileManager.h"
    #import "OMCServiceProxy.h"
    #import "OMCUser.h"
    
    #import "OMCStorage.h"
    #import "OMCMobileBackend+OMC_Storage.h"
    #import "OMCStorageCollection.h"
    #import "OMCStorageObject.h"
    
    #import "OMCSynchronization.h"
    #import "OMCMobileBackend+OMC_Synchronization.h"
    #import "OMCFetchObjectCollectionBuilder.h"
    #import "OMCMobileResource.h"
    #import "OMCSyncGlobals.h"
    
    #import "OMCAnalytics.h"
    #import "OMCMobileBackend+OMC_Analytics.h"
    
    #import "OMCNotifications.h"
    #import "OMCMobileBackend+OMC_Notifications.h"
    
    #import "OMCLocation.h"
    #import "OMCMobileBackend+OMC_Location.h"
    
    
    #endif /* GettingStartedSwift_Bridging_Header_h */
  2. 머리글 파일을 생성한 후 Objective-C Bridging Header 설정에 대한 빌드 설정 에서 파일의 위치를 확인합니다.
    프로젝트가 공유되는 경우 절대 경로가 아닌 프로젝트에 대해 지정된 헤더 위치를 유지하는 것이 가장 좋습니다.

Swift 애플리케이션에 SDK 헤더 및 라이브러리 추가

추가하는 헤더 및 라이브러리 집합은 앱에 포함하는 클라이언트 SDK의 정적 라이브러리에 따라 다릅니다. 최소한 libOMCCore.alibIDMMobileSDK.a 라이브러리가 필요합니다.

SDK 헤더 및 라이브러리를 추가하려면 다음과 같이 하십시오.
  1. Oracle Mobile Hub SDK를 다운로드하고 압축을 풉니다.
  2. SDK 파일의 압축을 해제한 위치에서 원하는 라이브러리 및 헤더 파일을 Xcode의 Swift 프로젝트로 끌어 놓습니다.
    SDK 라이브러리의 콘텐츠는 범주별로 계층적으로 정렬되므로 다른 머리글이 포함되도록 전체 폴더를 끌어다 놓아야 합니다.
  3. 빌드 단계 설정에서 static 라이브러리와 IDM 라이브러리에 필요한 iOS 프레임워크를 바이너리 라이브러리의 링크 단계에 추가합니다.
  4. 검색 경로에 헤더 파일을 추가합니다. 프로젝트 설정 아래에서 SDK 폴더의 상위 디렉토리 위치, 즉 libOMCCore.a, libIDMMobileSDK.a 등의 상위 디렉토리가 포함되도록 Header Search Paths 를 구성합니다. 프로젝트에 대한 상대 경로를 사용해야 합니다.
  5. 실제로 코드에 필요한 헤더 파일을 포함하도록 연결 헤더 파일을 편집합니다.
    즉, 사용하려는 클래스에서 사용되는 헤더를 추가해야 합니다.
    예를 들어, OMCAuthorization.h 의 모든 메소드에 액세스할 수 있는지 확인하려면 OMAuthView.h, OMCUser.hOMDefinitions.h 도 추가해야 합니다. 브레이징 헤더 파일에 이러한 파일이 없으면 일부 메소드 및 OMCAuthorization 속성이 표시되지 않으며 컴파일러는 오류 경고를 표시하지 않습니다.

Swift 앱에서 SDK 객체 사용

Objective-C에서 Swift로 변환하는 규칙은 Apple 설명서에 설명되어 있습니다. 이러한 두 언어의 관계와 사용에 대한 일반적인 정보는 에서 확인해 보십시오.

다음을 확인하십시오.

  • Xcode에서 코드 편집기의 자동 완성 기능은 일반적으로 매핑을 얻을 만큼 충분히 작동합니다. 하지만 첫번째 매개변수에 레이블을 추가할 수 없는 경우도 있습니다. 자동 완성을 사용하는 경우 이에 대해 알아봅니다.

  • Objective-C init 메소드가 Swift에 도달하면 네이티브 Swift 이니셜라이저 구문을 사용합니다. 즉, init 접두어가 분리되어 메소드가 이니셜라이저임을 나타내는 키워드가 됩니다. 자세한 내용은 Apple 설명서를 참조하십시오.

  • !? 선택적 매개변수 사양과 선언의 모든 매개변수 유형에 대해 특별한 주의가 제공됩니다. 선택적 유형은 Objective-C를 Swift에 매핑할 때 컴파일러에 의해 자동으로 결정됩니다.

Swift 및 Oracle Mobile Hub 클라이언트 SDK를 사용하여 Xcode 시뮬레이터와 실제 장치에서 모바일 앱을 컴파일하고 실행할 수 있어야 합니다.

다음은 Oracle Mobile Hub 클라이언트 SDK를 사용하는 Objective-C 및 해당하는 Swift 코드의 예입니다.

푸시 통지에 대한 장치 토큰을 등록하려면 다음 Objective-C 코드입니다.

// Get notifications sdk object
OMCNotifications* notifications = [[appDelegate myMobileBackend] notifications];

// Register device token with MCS server using notifications sdk
[notifications registerForNotifications:[appDelegate getDeviceTokenData]
 
onSuccess:^(NSHTTPURLResponse *response) {						  
	NSLog(@"Device token registered successfully on MCS server");						  
	dispatch_async(dispatch_get_main_queue(), ^{
	// Update UI here
	}) ;
}
 
onError:^(NSError *error) {						
	NSLog(@"Error: %@", error.localizedDescription);							
	dispatch_async(dispatch_get_main_queue(), ^{
	// Update UI here
	}) ;
}];

swift에서 다음과 같은 방식으로 작성할 수 있습니다.

@IBAction func registerForPushNotifications() {
	
	// Get notifications sdk object
	let notifications = appDelegate.myMobileBackend().notifications();
	
	// Get device token first, and assign it here
	let deviceTokenData:NSData! = nil;
	
	// Register device token with MCS server using notifications sdk
	notifications.registerForNotifications(deviceTokenData, onSuccess: { (response:NSHTTPURLResponse!) in
		
		NSLog("Device token registered successfully on MCS server");
		
		dispatch_async(dispatch_get_main_queue()) {
			// Update UI here
		}
		
	}) { (error) in
		
		print("Error: %@", error.localizedDescription);
	};
}