IOS Client SDKを使用したSwiftアプリケーションの書込み

IOSモバイル・アプリケーションを開発するには、iOSクライアントSDKおよびSwiftおよびObjectiveC - Cプログラミング言語を使用します。

Xcode IDEを使用した場合:

  1. ブリジング・ヘッダー・ファイルを追加します。
  2. SDKヘッダー・ファイルとライブラリを追加します。
  3. ObjectiveC - Cリンカー・フラグを追加します。
  4. Xcode内の他のiOSプロジェクトと同じように、iOSクライアントSDKを使用してアプリケーションをコンパイルしてリンクします。SwiftでSDKを使用すると、Objective-CでSDKを使用する場合と同じ依存性がすべてあります。

ブリッジング・ヘッダー・ファイルの追加

Bridgeヘッダー・ファイルを使用して、SwiftアプリケーションがコールするObject - Cパブリック・クラスのヘッダー・ファイルをインポートする必要があります。Oracle Mobile HubクライアントSDKで使用可能なすべてのパブリック・クラスは、SDKのincludeフォルダにあります。

Xコードでブリッジング・ヘッダー・ファイルを作成する手順は、次のとおりです。

  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.aおよびlibIDMMobileSDK.aライブラリが必要です。

SDKのヘッダーおよびライブラリを追加する手順は、次のとおりです。
  1. Oracle Mobile Hub SDKをダウンロードして解凍します。
  2. SDKファイルを解凍した場所から、目的のライブラリおよびヘッダー・ファイルをXcodeのSwiftプロジェクトにドラッグします。
    SDKライブラリのコンテンツはカテゴリ別に階層的に配置されるため、フォルダ全体をドラッグして他のヘッダーも保持する必要があります。
  3. 「ビルド・フェーズ」設定で、静的ライブラリとIDMライブラリに必要なiOSフレームワークを、バイナリ・ライブラリを含むリンクフェーズに追加します。
  4. ヘッダー・ファイルを検索パスに追加します。プロジェクト設定で、SDKフォルダの親ディレクトリ(libOMCCore.alibIDMMobileSDK.aなどの親ディレクトリ)の場所を含めるようにHeader Search Pathsを構成します。プロジェクトへの相対パスを必ず使用してください。
  5. ブリジング・ヘッダー・ファイルを編集して、実際にコードに必要となるヘッダー・ファイルを含めます。
    これは、使用するクラスで使用されるヘッダーも追加する必要があることを意味します。
    たとえば、OMCAuthorization.hのすべてのメソッドがアクセス可能であることを確認するには、OMAuthView.hOMCUser.hおよびOMDefinitions.hも追加する必要があります。ブリッジング・ヘッダー・ファイルにこれらのファイルがないと、OMCAuthorizationの一部のメソッドおよびプロパティが表示されず、コンパイラはエラーを警告しません。

SwiftアプリケーションでのSDKオブジェクトの使用

ObjectiveC - CからSwiftに変換するためのルールについては、Appleのドキュメントを参照してください。これら2つの言語の関係および使用方法に関する一般情報は、を参照してください。

次の項目を確認してください。

  • Xcodeのコード・エディタのオートコンプリート機能は、一般に、マッピングを取得するには十分に機能します。ただし、場合によっては、想定されない最初のパラメータにラベルが配置されることがあります。オートコンプリートを使用する場合は、その際にウォッチします。

  • Object - C initメソッドがSwiftに移行すると、ネイティブのSwiftイニシャライザ構文を取得します。これは、init接頭辞が切り分けられ、メソッドがイニシャライザであることを示すキーワードとなることを意味します。詳細は、Appleのドキュメントを参照してください。

  • !および?オプションのパラメータ指定、および宣言内のパラメータ化された型には特別な注意を払う必要があります。オプションのタイプは、ObjectiveC - CをSwiftにマッピングするときにコンパイラによって自動決定されます。

Xcodeシミュレータと実際のデバイスの両方で、SwiftおよびOracle Mobile HubクライアントSDKを使用してモバイル・アプリをコンパイルおよび実行できます。

次に、Object - Cの例と、Oracle Mobile HubクライアントSDKを使用する同等のSwiftコードを示します。

プッシュ通知用のデバイス・トークンを登録するには、次のObjectiveC - 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);
	};
}