はじめに
アプリ内でアイコンを変更する機能を試したのでメモです。
期間限定でアイコンを変更したい場合などに使えそうです。
注意1
iOS10.3から使用可能な機能です。
それ以前のiOSをサポートしている場合はif #available(iOS 10.3, *) {
とする必要があります。
注意2
##やり方
###アイコンの追加
Assets.xcassetsではなく直接追加する必要があります。
60×60の@2x
と@3x
を用意してください。

###Info.plist
下記のようにCFBundleIconsを追加します。
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>redIcon60</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>redIcon60</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
コード
下記のようなコードを書きます。
※変更後にアラートが出ます。
デフォルトのアイコンに戻す
UIApplication.shared.setAlternateIconName(nil, completionHandler: nil)
指定した画像ファイルに変更する
UIApplication.shared.setAlternateIconName("redIcon60", completionHandler: nil)