LoginSignup
100
84

More than 5 years have passed since last update.

cocoapods-keysで設定値をプロジェクトから切り離す

Last updated at Posted at 2015-01-10

はじめに

APIのACCESS_KEYSECRET_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で行います。

$ gem install cocoapods-keys

設定方法

プロジェクトルートディレクトリにおいて、以下のコマンドを行うと、KEYとVALUEを設定できます。

$ pod keys set KEY VALUE

設定作業の具体例です。

$ 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します。

$ pod install or pod update

上記コマンドにより、動的に各設定値にアクセスするためにメソッドを持ったクラスが生成され以下のように参照できます。

#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

PodfileにKEYの一覧を記載 via CocoaPods 0.36

CocoaPodsnのv0.36以上であれば、PodfileにKEYの一覧を記載できます。
pod keys setコマンドを実施しなくても、pod installを実施すると対話的に設定したKEYのVALUEを聞いてくれます。

plugin 'cocoapods-keys', {
  :project => "Eidolon",
  :keys => [
    "ArtsyAPIClientSecret",
    "ArtsyAPIClientKey",
    "HockeyProductionSecret",
    "HockeyBetaSecret",
    "MixpanelProductionAPIClientKey",
    ...
  ]}
$ 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のアプリがあります。

100
84
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
84