概要
- この記事は『SwiftでFacebook連携しよう!』の続編です!
- 『SwiftでFacebook連携しよう!』では、CocoaPodsを使用してSDKを導入する部分でPodfileに
use_framewoeks!
を使用せず、ブリッジファイルを作成して読み込む形式を取っていましたが、ぜひ「use_framewoeks!
を有効化した場合の方法が知りたい」とのご要望をいただきました。調べてみましたので報告します。
Podfileの「use_frameworks!」を有効にした場合の導入方法
- 下記の操作以外は基本的に『SwiftでFacebook連携しよう!』と同様です。詳しくは記事をご覧ください。
操作手順
(1) mBaaSのiOS SDKを一部編集して使用します。mBaaSのiOS SDKはGitHub上にありますで、右上の「Fork」ボタンをクリックして自分のディレクトリにコピーします
(2) 自分のディレクトリ内にコピーしたSDKの中に、Pod installするときに読み込むファイル「NCMB.podspec」ファイルを開きます、
(3) 右上のペンマークをクリックして編集画面を開きます、最後の「end」の1行前に下記を追記してcommitします
s.dependency 'FBSDKLoginKit'
- SDKの操作は以上です
(4) 既存のプロジェクトを使用する場合のみ:.xcodeprojディレクトリ内にある下記のファイルあるいはフォルダを削除します
****.xcworkspace
Podfile.lock
-
Pods
フォルダ
(5) 「Podfile」を下記内容に修正して、ふたたびターミナルでpod installを行います
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks!
target '****プロジェクト名****' do
pod 'NCMB', :git => 'https://github.com/****自分のGitHubディレクトリ名****/ncmb_ios.git'
end
※「https://github.com/****自分のGitHubディレクトリ名****/ncmb_ios.git
」は2.の画像にある「HTTPS▼」の所からコピーしてください
(6) 新たに作成された.xcworkspace
ファイルをダブルクリックしてXcodeを立ち上げます
(7) 既存のプロジェクトを使用する場合のみ:****-Bridging-Header.h
ファイルを削除します
(8) (7)の代わりに、AppDelegate.swift
とViewController.Swift
に次を追記します
import NCMB
import FBSDKLoginKit
(9) 動作確認をします
考察と解説
- 参考Qiita記事(iOS9でFacebook Single Sign On)を見て、別のやり方があることを知りました。同様にできるのかな?とやってみるも上手くいきませんでした。。浅はかでした。原因はSDK同士の参照関係の問題が絡んでいるようでした。
- 調べると
podspec
ファイルに'FBSDKLoginKit'
を追記したmBaaSのSDKをインポートすることで、mBaaSのNCMB SDKだけでなくFBSDKCoreKitとFBSDKLoginKitもプロジェクトに組み込まれるようでした。逆にこれら3つのSDKの参照関係の問題でこの方法でないとエラーが出てしまうようでした。 - SDKを触るわのは少し抵抗がありましたが、
$ pod install
するときに読み込むpodspec
ファイルの編集だけなの、ブリッジして使う方法よりも楽?でしょうかね。 - 一応ニフティクラウドmobile backendのドキュメントには前者の方法で書かれていますが一応こちらでもできましたのでご紹介させていただきました!