1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

認証情報管理問題

iOS開発においてAPIKeyやSNS連携用のidなどの認証情報の管理をどうするかというのは悩ましいです。
こういった隠蔽したい情報を管理するにあたって避けたいことはいくつかあります。

避けたいこと

gitの管理対象のファイルに記載する

プライベートリポジトリでも、意図せずパブリック化される事故はあるので避ける。

NG例

  • swiftコードに認証情報をベタ書き
  • Build SchemeのEnvironment Variablesで宣言
  • Build SettingsのUser Definedで宣言
  • Build PhasesでScript実行し宣言、Script内にベタ書き.

リソースファイルに記載する

昔から有名ですが、ipaファイルをunzipすると誰にでもリソースファイルは見えてしまいます。
info.plistでBuild Schemeごとに値を変えるというのは好ましくないです。

※ここでいうリソースファイルはBuild PhasesのCopy Bundle Resourcesで指定されているファイル群です。
plist、assetsなどのswiftファイル以外前半です。

NG例

  • リソースファイルに定義しCopy Bundle Resourcesでipaに含める

今のところ、良さそうな方法

Git管理しない.swiftで定義する

git管理外(.gitignoreで指定)の.swiftファイルで定義する方法です。

.gitignoreにしておけば、変更を加えても、うっかりコミットされることはないです。
一方で.swiftファイルなので、何年か後に変更することがあっても容易。
info.plistや他のファイル形式と違って、定数なのに取得時にOptionalになるなどもない。

守るべき点としては、プロジェクトファイルでは認証情報.swiftをビルドに含めるということになっていれば良いです。

  • projectからのリファレンスはある
  • Compile Sourcesで定義されている
  • でも.swift自体はgit管理しない.

手順はこの方法だとやりやすいかと思います。

  1. .gitignoreに認証情報.swift追記しコミット.
  2. 認証情報.swiftを通常のソースファイル追加手順で追加.
  3. Finder上でファイルを削除.
  4. 差分のあるproject.pbxprojをコミット

Bitriseでソースファイルの追加方法

Bitriseに認証情報.swiftをuploadしておいて、workflow実行時にアクセスしてプロジェクトに追加して利用します。

Generic file Storageに認証情報.swiftをuploadする

Workflow EditorのCode Signingタブ最下部ににGeneric file storageというものがあります。
あらかじめFileStorageIDを指定してファイルをuploadすると、storageのURLが発行されWorkflow内でアクセスできる仕組みになっています。
発行されるもの自体は$BITRISEIO_YOUR_FILE_STORAGE_ID_URLという形式の環境変数になります。

File Downloaderでプロジェクト内に配置する

File DownloderというstepがあるのでそちらでDL先を指定します。
git clone時の Clone destination (local) directory path がデフォルトの$BITRISE_SOURCE_DIRであれば、カレントディレクトリがプロジェクトのルートになるので適切に配置してください。

以上で完成

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?