Objective-CのコードでSDKを使用する
概要
LINE SDK for iOS SwiftはすべてSwiftで書かれていますが、Objective-Cのプロジェクトで使用できます。方法は2つあります。
オプション1:言語混在プロジェクトを作成する
SwiftとSwift/Objective-Cの相互運用の経験がある場合は、LINE SDK for iOS SwiftをObjective-Cのプロジェクトに直接組み込み、Swift言語でLINE SDKのAPIを呼び出すことをお勧めします。
Objective-Cの既存のプロジェクトは、Objective-CとSwiftの言語混在プロジェクトに変換できます。言語混在プロジェクトに、LINE SDK for iOS Swiftと処理を受け渡しするSwiftのファイルを追加できます。
Swiftのファイル内で必要な宣言をObjective-Cから利用するには、宣言に@objc属性または@objcMembers属性を付与してください。これらの属性について詳しくは、Swift.orgの「Attributes」を参照してください。
Swiftのファイルをプロジェクトにインポートすると、Xcodeにより自動的にブリッジングヘッダーファイルが生成されます。これにより、それらのファイルをObjective-Cのコードでも利用できるようになります。ブリッジングヘッダーについて詳しくは、Appleの「Importing Swift into Objective-C」を参照してください。
SwiftのクラスをObjective-Cのプロジェクトで使えるようにするうえで、以下の記事も役に立ちます。
- Jen Sipilaの「Setting up Swift and Objective-C Interoperability」。特に、「Make a Swift Class available to Objective-C Files」セクションが参考になります。
- Appleの「Migrating Your Objective-C Code to Swift」。プロセス全体を理解するのに役立ちます。
オプション2:Objective-Cラッパーを使う
Objective-CのコードでLINE SDK for iOS Swiftと処理を受け渡しするには、LINE SDK for iOS Swiftに含まれるObjective-Cラッパーを使います。オプション1とは異なり、Objective-Cラッパーフレームワークをプロジェクトに追加する必要があります。ここでは、Objective-Cラッパーの基本概念、インストール、および一般的な使い方について説明します。
LINE SDK for iOS SwiftはSwiftのコードにのみ対応しています。SDKをObjective-Cのコードに対応させるため、Objective-CラッパーはコアSDK上に実装されています。LINE SDK for iOS Swiftの中核的な機能のほとんどを、ラッパーを介して利用できます。Swiftと完全な互換性がないObjective-Cの仕様の制限により、一部の機能はObjective-Cラッパーで利用できません。
本来のSDKと名前衝突を起こさないように、タイプとほとんどのSDKコンポーネントの名前に「LineSDK」というプリフィックスが付きます。ラッパーの設定には追加的な手順も伴います。
ラッパーはLINE SDK for iOS Swiftを使うための一時的な手段であることに留意してください。LINE SDK for iOS Swiftの機能をフル活用するには、プロジェクトをSwiftに移行する事を推奨します。
インストール
前提条件
LINE SDK for iOSをビルドしてObjective-Cラッパーを介して使用するには、以下が必要です。
- デプロイメントターゲットとしてiOS 11.0以降
- Xcode 10以降
CocoaPods
CocoaPodsについて詳しくない場合は、『CocoaPods Getting Started Guide』を参照してください。CocoaPodsを使ってLINE SDK for iOS Swiftをアプリに組み込む前に、作業環境にCocoaPodsのgemをインストールする必要があります。
- Podfileを準備したら、ターゲットに以下のpodコマンドを追加します。
- 以下のコマンドを実行します。
- LINE SDK for iOS Swiftがダウンロードされ、Xcodeのワークスペースに組み込まれます。
SDKをインポートする
LINE SDK for iOS SwiftをObjective-Cラッパーと共にObjective-Cのプロジェクトにインポートするには、以下のように@import LineSDK;を追加します。
Carthage
Carthageは分散型の依存性マネージャーで、ライブラリをビルドしてバイナリのフレームワークとして利用できます。
- Carthageツールをインストールするには、Homebrewを使います。
- Carthageを使ってLINE SDK for iOS SwiftをXcodeプロジェクトに組み込むには、CartfileにSDKのGitHubリポジトリを以下のように指定します。
- 以下のコマンドを実行してLINE SDK for iOS Swiftをビルドします。
以下のセクションに記載された手順に従って、ビルドされたLineSDK.frameworkファイルとLineSDKObjC.frameworkファイルをXcodeプロジェクトに追加できます。
フレームワークファイルをXcodeプロジェクトにリンクする
Carthage/Build/iOSフォルダーからLineSDK.frameworkファイルとLineSDKObjC.frameworkファイルをドラッグして、アプリのターゲットの[Build Phases]設定タブの[Link Binary With Libraries]セクションにドロップします。
ビルドフェーズでフレームワークファイルをコピーする
- アプリのターゲットの[Build Phases]設定タブで [+]アイコンをクリックして、[New Run Script Phase]を選択します。以下の内容で実行スクリプトを作成します。
- フレームワークファイルのパスを[Input Files]セクションに追加します。
- フレームワークファイルのパスを[Output Files]セクションに追加します。
[Build Phases]設定タブは以下のようになるはずです。

[Always Embed Swift Standard Libraries]オプションを有効にする
[Build Settings]設定タブで[Always Embed Swift Standard Libraries](ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES)オプションを[YES]に設定して、Swiftの標準ライブラリを最終的なアプリバンドルに含めます。
SDKをインポートする
LINE SDK for iOS SwiftをObjective-Cラッパーと共にObjective-Cのプロジェクトにインポートするには、以下のように@import LineSDKObjC;を追加します。
命名規則
Objective-Cラッパーを使う場合、タイプとほとんどのSDKコンポーネントの名前に「LineSDK」というプリフィックスが付きます。以下のコードサンプルは、よく実行されるタスクのObjective-Cでの制御方法を示しています。
複数の権限を指定してユーザーをログインさせる
ユーザープロフィールを取得する
Objective-Cラッパーでエラーを制御する
Objective-Cの規則に対応するため、Objective-CラッパーはNSErrorオブジェクトをスローします。以下のコードでは、エラーがLINE SDKに関係するのかどうかを確認しています。
ラッパーからスローされるすべてのエラーは、本来のLINE SDK for iOS Swiftからスローされるのと同じcodeプロパティとuserInfoプロパティを持ちます。それらを使ってエラーの原因を確認できます。
エラーを特定して制御する方法については、「エラーを制御する」を参照してください。