react-native-dynamic-app-icon
v1.1.0
Published
Programmatically change the app icon in React Native.
Downloads
22,272
Maintainers
Readme
React Native Dynamic App Icon
Since iOS 10.3 Apple supports alternate App Icons to be set programmatically. This package integrates this functionality as React Native module. Android is not (yet?) supported.
Table of Contents
Install
$ npm install react-native-dynamic-app-icon
Mostly automatic installation
$ react-native link react-native-dynamic-app-icon
Manual installation
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-dynamic-app-icon
and addRNDynamicAppIcon.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNDynamicAppIcon.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project
Add alternate icons
Alternate icons have to be placed directly in your Xcode project rather than inside an asset catalogue. The @2x
and @3x
naming convention is supported as usual.
Adjust info.plist
Copy the following to your info.plist
and adjust it as needed. Omit the file extension (and @2x
) part, Xcode will pick them accordingly. You can add more alternate icons by copying the an alternate block.
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>alternate</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon_alternate</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
<key>alternate2</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon_alternate2</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>FILENAME</string>
</array>
</dict>
</dict>
</dict>
Usage
import AppIcon from 'react-native-dynamic-app-icon';
AppIcon.setAppIcon('alternate');
AppIcon.getIconName(result => {
alert( 'Icon name: ' + result.iconName );
});
Api
setAppIcon(key: string)
To change the app icon call this method with one of the alternate app icons keys specified in your plist.info
. To reset to the default app icon pass null
.
supportsDynamicAppIcon()
Returns a promise which resolves to a boolean.
getIconName(callback(result))
Returns a callback with an object containing the icon name. Example: {iconName: 'default'}
.