+2
-1
app.config.js
+2
-1
app.config.js
···
153
153
'expo-notifications',
154
154
{
155
155
icon: './assets/icon-android-notification.png',
156
-
color: '#ffffff',
156
+
color: '#1185fe',
157
157
},
158
158
],
159
159
'./plugins/withAndroidManifestPlugin.js',
160
+
'./plugins/withAndroidManifestFCMIconPlugin.js',
160
161
'./plugins/withAndroidStylesWindowBackgroundPlugin.js',
161
162
'./plugins/shareExtension/withShareExtensions.js',
162
163
].filter(Boolean),
+37
plugins/withAndroidManifestFCMIconPlugin.js
+37
plugins/withAndroidManifestFCMIconPlugin.js
···
1
+
const {withAndroidManifest} = require('expo/config-plugins')
2
+
3
+
module.exports = function withAndroidManifestFCMIconPlugin(appConfig) {
4
+
return withAndroidManifest(appConfig, function (decoratedAppConfig) {
5
+
try {
6
+
function addOrModifyMetaData(metaData, name, resource) {
7
+
const elem = metaData.find(elem => elem.$['android:name'] === name)
8
+
if (elem === undefined) {
9
+
metaData.push({
10
+
$: {
11
+
'android:name': name,
12
+
'android:resource': resource,
13
+
},
14
+
})
15
+
} else {
16
+
elem.$['android:resource'] = resource
17
+
}
18
+
}
19
+
const androidManifest = decoratedAppConfig.modResults.manifest
20
+
const metaData = androidManifest.application[0]['meta-data']
21
+
addOrModifyMetaData(
22
+
metaData,
23
+
'com.google.firebase.messaging.default_notification_color',
24
+
'@color/notification_icon_color',
25
+
)
26
+
addOrModifyMetaData(
27
+
metaData,
28
+
'com.google.firebase.messaging.default_notification_icon',
29
+
'@drawable/notification_icon',
30
+
)
31
+
return decoratedAppConfig
32
+
} catch (e) {
33
+
console.error(`withAndroidManifestFCMIconPlugin failed`, e)
34
+
}
35
+
return decoratedAppConfig
36
+
})
37
+
}