DeployGate SDK for iOSの使い方


[DeployGate SDK for iOS](https://deploygate.com/docs/ios_sdk)が[リリースされました](http://mixi.co.jp/press/2014/0423/12188/?__from=mixi)。
Android版は既に存在しているのですが、iOS版はそれとほぼ同等の

- 更新情報の取得		
- クラッシュレポート		
- アプリの起動レポート		
- ユーザー認証		
- リモートログ

が使えるようになります。
早速使ってみました。

# SDKインストール
インストール方法は公式のドキュメントに書いてあります。
簡単にインストールできますが、ここでは画像付きで一手一手進めていきたいと思います。

[何はともあれ、アカウント作成。](https://deploygate.com/)
そして、[iOS beta プログラム](https://deploygate.com/beta_program)を始めてない人は始めましょう。
これでDeployGateのiOS版を使えるようになります。

上部の開発ツール欄に「SDK for iOS」のリンクが増えているので、そこから[ドキュメントページ](https://deploygate.com/docs/ios_sdk)を開きます。

![iossdk.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/6743b7eb-d299-9409-62d5-eb20f7c14285.jpeg "iossdk.jpg")



少し下にスクロールすると、SDKのダウンロードというボタンがあります。


![インストール.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/1e0a603c-7d0e-14d4-c330-a55919c759cd.jpeg "インストール.jpg")


このボタンを押すと、ダウンロードが始まるのでコーヒーを汲んできます。

![photo1.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/ea8fd563-6e47-dde8-8ec8-75b6cfd215f2.jpeg "photo1.jpg")



席に戻るとダウンロードが終わっているので、解凍します。
解答したら、DeployGateSDK1.0.embeddedframeworkをプロジェクトのFrameworksフォルダにドラッグアンドドロップします。
注意点として、DeployGateSDK1.0.embeddedframeworkの中にあるDeployGateSDK.frameworkだけではだめで、解凍して作成されたフォルダごとドラッグアンドドロップするみたいです。

![dd2.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/246d723d-efae-5445-9cc5-c33aefd11c27.jpeg "dd2.jpg")


すると、確認画面が表示されるので、「copy items into destination group's folder」のチェックを入れてFinishを押します。

![dialog.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/6afa4484-ea5b-4201-965a-5d71857c3399.jpeg "dialog.jpg")

続いて、SystemConfiguration.frameworkが必要らしいので追加します。
下の画像に書いた数字の順番に押すと、フレームワーク追加画面が表示されます。

![123.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/7295a8c3-3379-0307-e66c-0ea9aa8df574.jpeg "123.jpg")

上部の検索窓にsystemconまで入れるとSystemConfiguration.frameworkが表示されるので、選択してAddします。

![systemcon.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/379fad72-dd32-a5d8-810b-8e2d0b04bfbb.jpeg "systemcon.jpg")

これでインストールは完了しました。

#セットアップ
次にセットアップをします。
プロジェクトに含まれているhogehoge-Prefix.pchというファイルに#import <DeployGateSDK/DeployGateSDK.h>を追記します。
例えば、プロジェクト名がsdkSampleであれば「sdkSample-Prefix.pch」というファイルがSupporting Filesディレクトリ内にあるはずです。

![pch.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/5d678f2f-d5fa-47f4-98b4-3cb28cf72e5f.jpeg "pch.jpg")

余談ですがこのhogehoge-Prefix.pchですが、このファイルの#ifdef __OBJC__内にインポートしておくと全てのファイルでインポートしているのと同じ効果が得られます。
プロジェクトのどこからでも使えるようにしておきたいクラスはここでインポートしておくとスッキリすることがあります。
（何でもかんでもここに書くのはおすすめしませんが。）

続いて、AppDelegateに初期化コードを追加します。
例えば、プロジェクト作成時にプレフィックスをSSと指定した場合、SSAppDelegate.mというファイルが存在するはずです。
そこに、[ドキュメントページ](https://deploygate.com/docs/ios_sdk)に書いてあるコードをコピペします。
ログインしている場合、コピペコードにはauthor、keyが書き込まれた状態になっているはずです。

![appdelegate.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/efbf83fd-6beb-1b65-f35c-8f2eed655b0c.jpeg "appdelegate.jpg")

以上でセットアップ完了です。
この時点ですでに

- アプリの起動レポート
- クラッシュレポート

が取得可能になっています。

#試してみる
起動レポートとクラッシュレポートを試してみましょう。
SDKはDeployGateで配信されたアプリ上で有効になります。
ipaファイルを作成し、DeployGateで配信してみましょう。
ipaファイルの作成方法は、[こちらの記事にまとめました](http://qiita.com/k_kinukawa/items/8718aba35060cf838ffa)。
作成したipaファイルを、DeployGateの[ダッシュボード](https://deploygate.com/dashboard)からアップロードします。

![dashboard.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/e54a25dd-6891-403f-d4c5-ebf8ec55de18.jpeg "dashboard.jpg")

自分の端末に配信されたでしょうか。
DeployGateでアプリ配信する方法については、[こちらなどを参考にして下さい](http://qiita.com/k_kinukawa/items/bbb3e98239e51fc3c803)。

配信されたアプリを起動すると、DeployGateのタイムラインにプッシュで通知が飛んできます。

![timeline.jpg](https://qiita-image-store.s3.amazonaws.com/0/8748/3c7d8018-ed44-bcea-c453-e1218c14c806.jpeg "timeline.jpg")

クリックすると、OSのバージョン等の情報を確認できます。
便利ですね。

次に、クラッシュさせてみましょう。
例えば、起動直後に表示されるViewControllerの中に以下のようなコードを仕込みます。

```obj-c

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    [self performSelector:@selector(hoge) withObject:nil afterDelay:2];
}

- (void)hoge
{
    id hoge = [[NSString alloc] init];
    [hoge count];
}

```

hogeというメソッドが2秒後に呼ばれます。
hogeメソッドの中では、NSStringのオブジェクトに対して存在しないメッセージを投げています。
これでクラッシュします。
注意点：なぜ2秒後に呼んでいるのかというと、SDKは起動時にレポートをサーバーへ送信しているらしく、起動直後にクラッシュしてしまうとレポート送信処理に到達しないからです。

クラッシュすると、起動レポートと同様にタイムラインにプッシュ通知が飛んできます。

#その他

- クラッシュレポート		
- アプリの起動レポート		

の他に、

- 更新情報の取得		
- ユーザー認証		
- リモートログ

が利用可能です。
記事が長くなってきたので、別エントリーに使い方をまとめたいと思います。
DeployGateを使って、アプリ開発の苦痛を減らしましょう！