以前作ってみた自作のCocoa Touch Framework(言語はSwift)(プロジェクト名を「JiminyCricket」と命名してます)に、まずは「Google Analytics SDK for iOS」を組み込んでみたのでMEMOしておきます。
通常のアプリに組み込んでいるのではなく、自作フレームワークに組み込んでいるので、若干やり方が違うようです。Beta3か4あたりからブリッジヘッダーは使わなくなったらしいですね。これも今後仕様が変わっていく可能性があるので注意です。
※ このMEMOは、有料iOSデベロッパー向けに公開されているベータ版「Xcode 6.2 beta 4」を使っています。Xcode6.1.xではこの通りに動かないかもしれません。
このMEMOでは、スクリーンショットベースにさらっとMEMOします。もう少し細かな流れは、以下のMEMOも見てみて下さい。
- Xcode 6 (Beta5) : SwiftでSQLite
→6.2ではなく、6の頃のMEMOなので古いですが、通常のアプリにObjective-CのSDKを組み込んでいる例です。「〜bridging-header.h」とか使ってますが、若干やり方が違っています。 - [Xcode6] SwiftでCocoa Touch Frameworkを作る
→このMEMOは、これの続きなので、先にこれを見てみてください。 - [Titanium] Google Analytics SDK for iOS 用のモジュールを自作
→Google Analytics SDKをTitanium用のモジュールテンプレート(言語はObjective-C)に組み込んだ時のMEMOです。
Frameworkプロジェクト側
こちらのプロジェクトは、例として「JiminyCricket」と名付けています。
Google Analytics SDK for iOSをダウンロードして(現時点ではversion3.10)プロジェクトに追加。追加した内容は画像の通りです。ブリッジヘッダーファイルを用意することなく、Frameworkを作成した際に作られているヘッダーファイル(この例では、JiminyCricket.h)に
#import "GAI.h"
#import "GAIDictionaryBuilder.h"
#import "GAIFields.h"
を書き加えました。
プロジェクトの「Build Phase」のところ「Binary With Libraries」はこのようになっています。Headersのところ「Project」というところにGoogle Analytics SDKのヘッダーファイルが一覧されていましたが、このままだとビルド時にエラーになるため、Publicに移動しました。
「PTGooleAnalytics.swift」と名付けたクラスファイルを別途作りました。そこにpublicメソッドをこのように書いてみました。「initGoogleAnalytics」というメソッドにトラックIDとスクリーン名を引数で渡すとその時点で一度だけGoogle Analyticsに通信するようなものです。これでユーザが起動したことがわかるような仕掛けですね。trackというメソッドも用意しましたがこれは特に何もしていません。(スクリーンショットに残ったままでした)
Frameworkを使うアプリ側
こちらのプロジェクトは、例として「WoodenHead」と名付けています。
アプリが起動して最初に現れる真っ白な画面で「viewDidLoad」が呼ばれるので、そこに自作フレームワークを呼び出す内容を書いてみました。ここでやったやり方で、JiminyCricketを読み込んで、ViewController.swift最初に「import JiminyCricket」と書くと、「PTGoogleAnalytics.initGoogleAnalytics」と書こうとするとコードヒントが出てきてくれます。
第一引数にトラッキングID(自分のGoogleAnalyticsのサイトで調べる必要があります)と第二引数にスクリーン名(こちらは自由な文字列)を付け加えて呼び出します。実行するとFramework内のコメントが出力されます。
GoogleAnalyticsのサイトでリアルタイム表示して「現在1」が現れたら成功です。うまくでてこない場合は、いろいろな原因が考えられますが、僕の場合、エラーなしで無反応だった時に、iOSシミュレーターをリセット「Reset Content and Settings…」したらうまく行ったことがありました。
[追記:] つづき
→[Xcode6] 自作Frameworkを実機で動くようにしてみる
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、CakePHP、Laravel、Unity、ZBrush、Modo、Adobe Substance 3D、Adobe Firefly、Xcode、Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。