Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #296】アプリアイコンを動的に変更する。サンプルあり(iOS10.3から可能)

この記事を読んでわかること

  • アプリアイコンを動的に変更する方法

アプリアイコンを動的に変更する方法のポイント

  • iOS10.3からアプリアイコンを動的に変更できるようになった
  • イコン画像は予めアプリバンドル内に入れておく必要がある。アプリからダウンロードした画像をアイコン画像に使うことはできなさそう!?
  • イコン画像変更したときには変更完了ダイアログがユーザーに表示される。なので、ユーザーにこっそり変更しておくことはできないよう

実装

  1. プロジェクトにアイコン画像を追加する
  2. info.plistにアイコン情報を追加する
  3. アイコンを変更するトリガーとなる処理を書く

1.プロジェクトにアイコン画像を追加する

PNG形式の画像が必要。PDF形式ではエラーになりました

下記2つのファイルを用意しました。 実際には、デバイスにより、@2xや@3xを用意するのがよいでしょう。

  • blueIcon.png (60*60) → デフォルトアイコン
  • brownIcon.png (60*60) → 変更するアイコン

プロジェクトに追加します。 f:id:fjswkun:20170313184840p:plain

2.info.plistにアイコン情報を追加する

<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>brownIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string> brownIcon </string>
            </array>
        </dict>
    </dict>
    <key>CFBundlePrimaryIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>blueIcon</string>
        </array>
    </dict>
</dict>

Xcode上で見ると下記のようになります。 f:id:fjswkun:20170313185412p:plain

3.アイコンを変更するトリガーとなる処理を書く

ボタンをタップすると、
  blueIcon ↔ brownIcon と変更するようにしました。

UIApplicationクラスのsetAlternateIconNameメソッドを使って変更します。

詳細は公式の情報を確認しましょう。 setAlternateIconName(_:completionHandler:) - UIApplication | Apple Developer Documentation

@IBAction func changeIcon(_ sender: UIButton) {
    
    // デフォルトアイコンの場合、brownIconに変更する
    // brownIconの場合、デフォルトアイコンに変更する
    var nextIconName:String? = nil
    if let _ = UIApplication.shared.alternateIconName{
        nextIconName = nil
    }else{
        nextIconName = "brownIcon"
    }
    
    UIApplication.shared.setAlternateIconName(nextIconName){
        (error) in
        print(error?.localizedDescription ?? "description is empty")
    }
}

サンプル

サンプルの概要

アプリインストール時のアイコン f:id:fjswkun:20170313185826p:plain

アプリ起動します。 f:id:fjswkun:20170313185853p:plain

ボタンをタップします。 f:id:fjswkun:20170313185905p:plain 完了ダイアログが表示されます。

アプリをバックグラウンドにします。 アイコンが変更されています。 f:id:fjswkun:20170313185941p:plain

サンプルソースのダウンロード

SampleChangeIcon.zip - Google ドライブ

なお、iOS SDK10.3以上でないとアプリアイコンの変更はできないので注意を。

Swift

入門書籍

絶対に挫折しない iPhoneアプリ開発「超」入門 増補改訂第5版
プログラミングが初めて!という人が小さなアプリを作ることで、アプリ開発を学ぶことができます。
「Swiftだけでなく、プログラミング自体が初めてなんだけど、どの本が良い?」と聞かれたときには、
この書籍をおすすめしています。

本気ではじめるiPhoneアプリ作り Xcode 8.x+Swift 3.x対応 (ヤフー黒帯シリーズ)
アプリ開発からApp Storeへの公開までの一通りを学ぶことができます。
入門書を2冊、3冊を読んだあとでこの書籍を読むとかなりの実力アップを感じることができます。

ただし、一通り学ぶことができますが、プログラミング初めてでこの書籍を選ぶことはオススメできません。
最初の方の内容はプログラミング初心者には理解が難しく、そこで勉強をやめてしまう可能性がありそうだと感じます。

Swiftポケットリファレンス
辞書として1冊は持ってても良い。

仕事でやれるレベルになるために

初心者から仕事でやれるレベルになるためにオススメできる日本語書籍がみつかりませんでした。
英語は苦手でも、書籍に書かれているソースはやさしく、読み進めることができます。

The iOS Apprentice (英語サイト・英語書籍)
Swift Apprentice (英語サイト・英語書籍)

平均的プログラマーを超えるために

詳解Swift 第3版
Swift3の書籍。第1版、第2版にもお世話になっています。
Swiftの文法についてとても詳しく書いてあります。

Ray Wenderlich | Tutorials for iPhone / iOS Developers and Gamers
QiitaのSwiftに関する記事