Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

はじめに

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のアプリがあります。

susieyy
フリーランス - スタートアップエンジニアリングアドバイザー - iOS技術顧問 - プロトタイプ開発
https://susieyy.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした