Objective-Cとの連携
Objective-Cプロジェクトの場合でも、当社のネイティブSwiftライブラリを使用することをお勧めしますが、Objective-Cライブラリを使用する必要がある場合は、このドキュメントをご活用ください。
SwiftからObjective-Cを呼び出す
Objective-Cライブラリは、ブリッジヘッダーをプロジェクトに追加し、適切なヘッダーをインポートすることで、Swiftコードから簡単に呼び出すことができます。
ブリッジヘッダー
ブリッジヘッダーの作成方法は次のとおりです。
- Swiftプロジェクトで新しいファイルを作成します。ファイルの種類を選択するよう求められたら、[Objective-C File]を選択します。
- このファイルに”placeholder.m”などの一時的な名前を付けます。このファイルは後で削除します。
- [Finish]をクリックすると、Xcodeで、ブリッジヘッダーを作成するよう求められます(求められない場合は、プロジェクト内にブリッジヘッダーが既に存在する可能性があります)。[Create Bridging Header]をクリックして続行すると、Xcodeによって自動的に新しいヘッダーファイルが作成されます。
- プロジェクトから
placeholder.m
ファイルを削除し、<ProjectName>-Bridging-Header.h
という新しいファイルを確認します。 この新しいブリッジヘッダーに次のimportステートメントを追加します。
@import TealiumIOS;
次に、以下のコードを使用して、SwiftからObjective-Cコードを呼び出します。
class TealiumHelper {
func somefunc () {
let tealConfig = TEALConfiguration.init(account: "ACCOUNT", profile: "PROFILE", environment: "ENVIRONMENT")
let teal = Tealium.newInstance(forKey: "KEY", configuration: tealConfig)
teal.trackView(withTitle: "SCREEN_NAME", dataSources: ["DATA":"VALUE"])
}
}
Objective-CからSwiftを呼び出す
SwiftライブラリはObjective-Cから直接呼び出すことができません。コード内に必要な注釈が存在せず、多くの場合で、モジュールがNSObjectを継承せずにネイティブのSwiftデータ型を使用するためです。 ただし、中間のヘルパークラスを使用することで、Objective-CからSwiftライブラリを呼び出すことができます。
ヘルパークラス
- Objective-Cプロジェクトで新しいSwiftファイルを作成します。ブリッジヘッダーがまだ存在しない場合は、ブリッジヘッダーを追加するよう求められます。この指示に従います。新しいSwiftファイルに”TealiumHelper.swift”という名前を付けます。
新しいヘルパーを呼び出すのに必要なファイルに、新しいSwiftヘッダー(
<ProjectName>-Swift.h
)をインポートします。#import "ProjectName-Swift.h"
ヘルパーファイル内のメソッドが、Objective-Cコードで利用できるようになります。ヘルパーはシングルトンにすることをお勧めします。
#import "TestSwiftBridge-Swift.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// instantiate the helper singleton
TealiumHelper * help = [TealiumHelper sharedInstance];
// call the start method, which initializes the Tealium library
[help start];
// trigger a new event tracking call from objective-c
[help track:@"this is from objective-c!" data:@{@"mydata":@"hello from obj-c"}];
return YES;
}