50
22

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 1 year has passed since last update.

iOSアプリのアイコンを任意のタイミングで変更する方法(アイコンの動的変更)

Last updated at Posted at 2018-12-24

##はじめに
先日、アプリのアイコンを変更することでユーザのアプリを開く手間を削減するといった内容のアプリをリリースしました。
そこで、アイコンを動的に変更する方法とリリース方法を自分なりにメモとして残しておきます。

##開発環境
Xcode 10.1
Swift 4.2.1

##準備するもの
アイコンを3つ(サイズ:1024px)

##ストーリボードにボタンを配置
スクリーンショット 2018-12-24 17.42.57.png

こんな感じ
ボタンが押されたタイミングでアイコンが変更されるようにする。
スクリーンショット 2018-12-24 18.30.17.png
関連付けは忘れずにしておくように。

##プロジェクトにアイコン画像を入れる
今回は以下の画像を使用
icon.pngicon1.pngicon2.pngicon3.png
白のアイコンをデフォルトのアイコンとする。

##コーディング
の前にInfo.plistを編集する。
スクリーンショット 2018-12-24 18.05.02.png

そしてIcon files(iOS 5)を追加スクリーンショット 2018-12-24 18.06.44.png

CFBundleAlternateIconsというKeyをDictionary型で追加
スクリーンショット 2018-12-24 18.08.50.png

さらにDictionary型でIcon1を追加
さらにその下にCFBundleIconFilesというKeyをArray型で追加
その下にitemをString型で追加し,Valueにアイコン画像の名前を入れる(拡張子は不要)
スクリーンショット 2018-12-24 18.17.01.png
あとは同じものを残りのアイコンの分も行う.コピペが可能。
このようになっていればOK
スクリーンショット 2018-12-24 18.18.56.png

あとは,アイコンを変更するコードを書くだけ.

##今度こそコーディング
といっても,簡単にできてしまう.

let iconName = "Info.plistに書き込んだアイコンのKey"
UIApplication.shared.setAlternateIconName(iconName, completionHandler: { error in print(error as Any) })

今回作ったサンプルにプロジェクトだとこうなる。

// アイコン1のボタンに関連付け済み
@IBAction func changeIconBtn1(_ sender: Any) {
    let iconName = "Icon1" // icon1.png(赤色のアイコン)
    UIApplication.shared.setAlternateIconName(iconName, completionHandler: { error in print(error as Any) })
}

ちなみにnilにするとデフォルトのアイコンになる。

UIApplication.shared.setAlternateIconName(nil, completionHandler: { error in print(error as Any) })

##実際に動かしてみた
sample_movie_1(1).gif

でけた。ほんとに簡単。それでは。

##1/28追記 リリースする際の注意事項
####必ずユーザからの入力(ボタンタップなどの操作)のみにおいて変更する
リリース済みアプリでは開発段階では天気が変更されたタイミングで自動的にアイコンも変更していました。しかしそれではHuman Interface Guidelinesにそぐわない為リジェクトされました。
####デフォルトのアイコンへ戻すことができるようにしておく
こちらもHuman Interface Guidelinesに記載されています
####@2x.png(120 x 120),@3x.png(180 x 180)のサイズのアイコンをプロジェクトに入れておく
こちらも(ry
Human Interface Guidelinesをよく読めということですね。
詳しくはこちらに載っています。英語ですが頑張って読みましょう。

50
22
3

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
50
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?