1. susieyy

    No comment

    susieyy
Changes in body
Source | HTML | Preview
@@ -1,114 +1,120 @@
## はじめに
APIの`ACCESS_KEY`や`SECRET_KEY`などの環境変数や、アプリ固有の設定値(KEY and VALUE)をソースコードやInfo.plistにハードコーディングせず、プロジェクトから切り離して管理できないかと常考えていました。
+## 実行環境
+
++ Xcode 6.1.1 (6A2008a)
++ cocoapods 0.35.0
++ cocoapods-keys 1.0.0
+
## インストール
cocoapods-keysはcocoapodsのプラグインとして配布されています。
https://github.com/orta/cocoapods-keys
インストールはcocoapodsと同じくgemで行います。
```Shell
$ gem install cocoapods-keys
```
## 設定方法
プロジェクトルートディレクトリにおいて、以下のコマンドを行うと、KEYとVALUEを設定できます。
```Shell
$ pod keys set KEY VALUE
```
設定作業の具体例です。
```Shell
$ cd MyApplication
$ pod keys set "NetworkAPIToken" "AH2ZMiraGQbyUd9GkNTNfWEdxlwXcmHciEOH"
Saved NetworkAPIToken to MyApplication.
$ pod keys set "AnalyticsToken" "6TYKGVCn7sBSBFpwfSUCclzDoSBtEXw7"
Saved AnalyticsToken to MyApplication.
$ pod keys
Keys for MyApplication
├ NetworkAPIToken - AH2ZMiraGQbyUd9GkNTNfWEdxlwXcmHciEOH
└ AnalyticsToken - 6TYKGVCn7sBSBFpwfSUCclzDoSBtEXw7
GIFs - /Users/orta/dev/mac/GIFs
└ redditAPIToken & mixpanelAPIToken
```
## 参照方法
設定値を更新したら、`pod install`します。
```Shell
$ pod install or pod update
```
上記コマンドにより、動的に各設定値にアクセスするためにメソッドを持ったクラスが生成され以下のように参照できます。
```ObjC
#import "ORAppDelegate.h"
#import <CocoaPods-Keys/MyApplicationKeys.h>
#import <ARAnalytics/ARAnalytics.h>
@implementation ORAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
MyApplicationKeys *keys = [[MyApplicationKeys alloc] init];
[ARAnalytics setupWithAnalytics:@{
ARGoogleAnalyticsID : keys.analyticsToken;
}];
}
@end
```
## 設定値はどこに保存されるの?
設定値はキーチェーンに保存されます。.envファイルのようにファイルにPlanTextで保存しないのでセキュアです。
![キーチェーンアクセス.png](https://qiita-image-store.s3.amazonaws.com/0/4943/f45ff75c-744d-233b-21f5-285b004f4b10.png "キーチェーンアクセス.png")
## PodfileにKEYの一覧を記載 via CocoaPods 0.36
CocoaPodsnのv0.36以上であれば、PodfileにKEYの一覧を記載できます。
`pod keys set`コマンドを実施しなくても、`pod install`を実施すると対話的に設定したKEYのVALUEを聞いてくれます。
```Podfile
plugin 'cocoapods-keys', {
:project => "Eidolon",
:keys => [
"ArtsyAPIClientSecret",
"ArtsyAPIClientKey",
"HockeyProductionSecret",
"HockeyBetaSecret",
"MixpanelProductionAPIClientKey",
...
]}
```
```Shell
$ pod install
Analyzing dependencies
Downloading dependencies
Using ARAnalytics (2.8.0)
...
Generating Pods project
Integrating client project
CocoaPods-Keys has detected a keys mismatch for your setup.
What is the key for ArtsyAPIClientSecret
> HOGE HOGE HOGE
```
## REF
実際に使用されているOSSのアプリがあります。
+ https://github.com/artsy/eidolon