Cordova-plugin-firebase: рдкреБрд╢ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЖрдЗрдХрди рдмрджрд▓рдирд╛ - 2018 рдореЗрдВ рд░рд┐рдХреНрдд рдПрдВрдбреНрд░реЙрдЗрдб рдЖрдЗрдХрди рд╕рдорд╕реНрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬреБрд▓ре░ 2018  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: arnesson/cordova-plugin-firebase

рд╕рдмрдХреЛ рдирдорд╕реНрддреЗ,

рдХреЙрд░реНрдбреЛрд╡рд╛ 8+ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЖрдЗрдХрди рдмрджрд▓рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдФрд░ рдЖрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдкреБрд░рд╛рдиреЗ 'рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЖрдЗрдХрди рдЗрдЬ рдмреНрд▓реИрдВрдХ рд╕реНрдХреНрд╡рд╛рдпрд░' рдЗрд╢реНрдпреВ рдХреЛ рд╣рд┐рдЯ рдХрд░ рджрд┐рдпрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рд╕рд░рд▓ 1 рд░рдВрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдкрдиреЗ рдРрд╕рд╛ рдЖрдЗрдХрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╡реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдкреВрд░реНрдг рдФрд░ рд░рдВрдЧреАрди рд╡рд░реНрдЧ рд╣реЛрдиреЗ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдирдпрд╛ Ionic 3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдФрд░ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд░реАрдбрдореА рдПрдЯреАрдПрдо рдЖрдкрдХреЗ рдЖрдЗрдХрди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдХрди рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпреЗ рдХрджрдо рдЙрдард╛рдиреЗ рд╣реЛрдВрдЧреЗ:

0) рдЗрдзрд░-рдЙрдзрд░ рдШреВрдордирд╛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдмрд╛рд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВред рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЪрд░рдг рджрд░ рдЪрд░рдг рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧреЗрдВрдЧреЗ, рдореБрдЭ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВред
1) рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрдХрди рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкрд╛рд░рджрд░реНрд╢реА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдХреЗрд╡рд▓ 1 рд░рдВрдЧ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ
2) рдпрд╣рд╛рдВ рдЬрд╛рдПрдВ: http://romannurik.github.io/AndroidAssetStudio/icons-notification.html#source.type=clipart&source.clipart=ac_unit&source.space.trim=1&source.space.pad=0&name=notification_icon "рдЫрд╡рд┐" рджрдмрд╛рдПрдВ рдКрдкрд░ рдмрд╛рдИрдВ рдУрд░, рдЕрдкрдирд╛ рдЖрдЗрдХрди рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдЗрд╕реЗ рдЯреНрд░рд┐рдо рдХрд░реЗрдВ / рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреИрдбрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ
3) рдЕрдЧрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрддрд╛ рд╣реИ рддреЛ 'рдбреНрд░реЙрдПрдмрд▓' рдлреЛрд▓реНрдбрд░ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд╛рдИрдВ рдУрд░ рддреАрд░ рджрдмрд╛рдПрдВред рдпрд╣ рдЖрдкрдХреЛ res рдлреЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╝рд┐рдк рджреЗрдЧрд╛ рдФрд░ 5 drawable-xxx рдлреЛрд▓реНрдбрд░ рд╣рд░ рдПрдХ рдЖрдкрдХреЗ рдЖрдЗрдХрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рджреЗрдЧрд╛
4) рдЙрди рдбреНрд░реЙрдПрдмрд▓ рдлреЛрд▓реНрдбрд░ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╣реАрдВ рдХреЙрдкреА рдХрд░реЗрдВред рдореЗрд░реЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЖрдЗрдХрди рдФрд░ рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛: project-root/resources/android/notification_icon
5) <resource-file /> рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдХреЗ рдЕрдВрджрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА config.xml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЪреВрдВрдХрд┐ crodova 8.x рд╕рд╣реА рд▓рдХреНрд╖реНрдп рдкрде рд╣реИ app/src/main/res ред рдХреЙрд░реНрдбреЛрд╡рд╛ <8 рдкрд░ рдпрд╣ рдХреЗрд╡рд▓ res (рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ platforms/android/res рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрдм рд╡реЗ platforms/android/app/main/res )ред рдЦрд╛рд▓реА рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рдкрд░ рдСрдирд▓рд╛рдЗрди 'рд╕рдорд╛рдзрд╛рди' рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред

<platform name="android">
(...) 
  <resource-file src="resources/android/notification_icon/drawable-mdpi/notification_icon.png" target="app/src/main/res/drawable-mdpi/notification_icon.png" />
  <resource-file src="resources/android/notification_icon/drawable-hdpi/notification_icon.png" target="app/src/main/res/drawable-hdpi/notification_icon.png" />
  <resource-file src="resources/android/notification_icon/drawable-xhdpi/notification_icon.png" target="app/src/main/res/drawable-xhdpi/notification_icon.png" />
  <resource-file src="resources/android/notification_icon/drawable-xxhdpi/notification_icon.png" target="app/src/main/res/drawable-xxhdpi/notification_icon.png" />
  <resource-file src="resources/android/notification_icon/drawable-xxxhdpi/notification_icon.png" target="app/src/main/res/drawable-xxxhdpi/notification_icon.png" />
</platform>

6) рдЕрдм рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдкрдХрд╛ рдЖрдЗрдХрди рд╣реИ рдЬреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд░реАрдбрдореА рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж 'notification_icon' рдирд╛рдордХ рдбреНрд░реЙрдПрдмрд▓ рд░рд┐рд╕реЛрд░реНрд╕ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЦреЛрдЬ рдореЗрд░реЗ рдХрд╛рдо рдирд╣реАрдВ рдЖрдИред рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд╣реИ: https://github.com/arnesson/cordova-plugin-firebase/blob/master/src/android/FirebasePluginMessagingService.java#L140 рд▓реЗрдХрд┐рди рдореИрдВ рд╣реВрдВ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╕рдВрд╕рд╛рдзрди рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред
7) рдЙрд╕ рд╡рдЬрд╣ рд╕реЗ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдЬрдм рдлрд╛рдпрд░рдмреЗрд╕ рдХреЛ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрддреЗ рд╕рдордп рдмреИрдХрдПрдВрдб рд╕реЗ icon рдкреИрд░рд╛рдореАрдЯрд░ рднреЗрдЬ рд░рд╣рд╛ рдерд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдирдХреА рдПрдкреАрдЖрдИ рд╢рд╛рдпрдж рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкреЗрд▓реЛрдб рдХреЗ notification рдФрд░ android рднрд╛рдЧреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЛ рдЖрдЗрдХрди рдкрд░рдо рдХреЛ notification рдЬреЛрдВрд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХ рдкреИрд░рд╛рдореНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред

рддреЛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреЗрд▓реЛрдб рдЬреЛ рдЖрдк рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рд╕реЗ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВ, рд╡рд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП: рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

{
  notification: {
    body: 'Imma push your notification if you know what i mean!',
    icon: 'notification_icon',
  },
  data: { someExtraData: 'goes_here' }
}

рдореИрдВ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - Android рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬреБрд▓рд╛рдИ 2018 рддрдХ рдлрд╛рдпрд░рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдиреАрдЪреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рдЙрдирдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ :

{
  notification: {
    body: 'Imma push your notification if you know what i mean!'
  },
  data: { someExtraData: 'goes_here_if_you_need_it' },
  android: { 
    icon: 'notification_icon'
  } 
}

8) рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдм рдЖрдк рдЕрдкрдиреЗ рдирдП рдЖрдЗрдХрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ - рдХреБрдЫ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдХрд┐рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдмрд╛рд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдкрдиреЗ рдЬреЛ рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реЛ (рдпрд╛рдиреА рдЬрд╝рд┐рдпрд╛рдореА рд╕реЗ рдПрдордЖрдИрдпреВрдЖрдИ)ред рдореИрдВрдиреЗ рдпрд╣ рднреА рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдЖрдЗрдХрди рдХреИрд╢ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдЗрд╕реЗ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП AVD рдкрд░ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрдкрдХреА рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╢рд░реНрдд рд╣реИред рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рдмреАрдЪ рдореЗрдВ рдЕрдкрдиреЗ рдРрдк рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░/рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓рдВрдмрд╛ рд▓реЗрдЦрди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЫреЛрдЯреЗ 10x10 рдЖрдЗрдХрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рдХрд┐рддрдиреА рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рд╡рд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ ...

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб config.xml <platform name="android"> рдЯреИрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЗрдХрди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

<config-file parent="/manifest/application/" target="app/src/main/AndroidManifest.xml">
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдореИрд╕реЗрдЬрд┐рдВрдЧ рдкреИрдирд▓ рдпрд╛ рдмреИрдХ-рдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдкреЗрд▓реЛрдб рдкрд░ рдХреЛрдИ рдЖрдЗрдХрди рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред
рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд░реАрдбрдореЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб config.xml <platform name="android"> рдЯреИрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЗрдХрди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

<config-file parent="/manifest/application/" target="app/src/main/AndroidManifest.xml">
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдореИрд╕реЗрдЬрд┐рдВрдЧ рдкреИрдирд▓ рдпрд╛ рдмреИрдХ-рдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдкреЗрд▓реЛрдб рдкрд░ рдХреЛрдИ рдЖрдЗрдХрди рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред
рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд░реАрдбрдореЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдзрдиреНрдпрд╡рд╛рдж @рдорджрд╢реАрдк !! рддреБрдордиреЗ рдореЗрд░реА рдЬрд╛рди рдмрдЪрд╛рдИ !!

рдирдорд╕реНрддреЗ, рдиреИрддрд┐рдХ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдореБрдЭреЗ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рдЗрд╕ рдЧрдбрд╝рдмрдбрд╝реА рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реБрдЖред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдкреВрд░реНрд╡-рдЪрд░рдг 0 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛, рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдмрд╛рд▓ рдЦреЛ рдЧрдПред

рдЬрдм рдореИрдВ http/рдкреЛрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдлрд╛рдпрд░рдмреЗрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ рдХрд┐ рдЬреЗрд╕рди рдЕрдорд╛рдиреНрдп рд╣реИред рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ:

рдЖрдЗрдХрди рдХреЛ message: { notification: { icon: 'notification_icon', ... }, ... } рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдкрд░ рдореБрдЭреЗ рдпрд╣реА рдорд┐рд▓рддрд╛ рд╣реИ

Error code=400, message=Invalid JSON payload received. Unknown name "icon" at 'message.notification': Cannot find field., status=INVALID_ARGUMENT, details=[@type=type.googleapis.com/google.rpc.BadRequest, fieldViolations=[field=message.notification, description=Invalid JSON payload received. Unknown name "icon" at 'message.notification': Cannot find field.]]

рдЖрдЗрдХрди рдХреЛ message: { android: { icon: 'notification_icon' }, ... } рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдкрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ

Error code=400, message=Invalid JSON payload received. Unknown name "icon" at 'message.android': Cannot find field., status=INVALID_ARGUMENT, details=[@type=type.googleapis.com/google.rpc.BadRequest, fieldViolations=[field=message.android, description=Invalid JSON payload received. Unknown name "icon" at 'message.android': Cannot find field.]]

рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рд╣рдорд╛рд░рд╛ рдмреИрдХрдПрдВрдб рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдкреНрд╕ рдХреЛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ)ред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдореИрдВ рдлрд╛рдпрд░рдмреЗрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддрд╛ рд╣реВрдВ):
const payload = { notification: { title: ........, body: ........., icon: 'notification_icon' } };

рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдореЗрд░реЗ рд▓рд┐рдП рджреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд╣реИред рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд░рдИрдПрд╕рдЯреА рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднреЗрдЬрддрд╛ рд╣реВрдВ https://firebase.google.com/docs/cloud-messaging/js/first-message ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢/рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рд░реВрдк https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#Notification рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдм рдореИрдВ рдЗрд╕реЗ рдкрдврд╝рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдЗрдХрди message.android.notification.icon рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд, рдПрдХ рд╕реНрддрд░ рдЧрд╣рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреЗрд▓реЛрдб рдХреЛ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ...

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдмрд╛рд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ ...

рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛

@рдорджрд╢реАрдк рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рддрд╣рдд 'рдЖрдЗрдХрди' рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ:

{ Error: Invalid JSON payload received. Unknown name "icon" at 'message.notification': Cannot find field

рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА:
{рдХреЛрдб: 'рдореИрд╕реЗрдЬрд┐рдВрдЧ/рдЕрдорд╛рдиреНрдп-рддрд░реНрдХ',
рд╕рдВрджреЗрд╢: 'рдЕрдорд╛рдиреНрдп JSON рдкреЗрд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред 'message.notification' рдкрд░ рдЕрдЬреНрдЮрд╛рдд рдирд╛рдо "рдЖрдЗрдХрди": рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рдвреВрдБрдв рд╕рдХрддрд╛ред },
codePrefix: 'рдореИрд╕реЗрдЬрд┐рдВрдЧ' }

рдХреЛрд╢рд┐рд╢ message.android.notification.icon рдХреЗ рдмрдЬрд╛рдп message.notification.icon ред

@madsheep @guilhermehtk рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛! рдзрдиреНрдпрд╡рд╛рджред

рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб config.xml <platform name="android"> рдЯреИрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЗрдХрди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

<config-file parent="/manifest/application/" target="app/src/main/AndroidManifest.xml">
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдореИрд╕реЗрдЬрд┐рдВрдЧ рдкреИрдирд▓ рдпрд╛ рдмреИрдХ-рдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдкреЗрд▓реЛрдб рдкрд░ рдХреЛрдИ рдЖрдЗрдХрди рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред
рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд░реАрдбрдореЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреБрдордиреЗ рдмрд╕ рдореЗрд░рд╛ рджрд┐рди рдмрдирд╛ рджрд┐рдпрд╛,

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬреИрд╕реЗ

рдПрдПрдкреАрдЯреА: рддреНрд░реБрдЯрд┐: рдЕрдирдмрд╛рдЙрдВрдб рдЙрдкрд╕рд░реНрдЧред

рдлрд┐рд░ The . рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

xmlns:android = " http://schemas.android.com/apk/res/android "

рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЬрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПconfig.xml рдХреЗ рдЕрдВрджрд░ рдЯреИрдЧ рдХрд░реЗрдВ

рддреБрдордиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдЪрд╛ рд▓рд┐рдпрд╛!

2019 рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдмрд┐рд▓реНрдб 7.1.1 рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ !!

рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдпрд╣рд╛рдВ рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

<resource-file src="resources/android/notification/notification_icon.png" target="app/src/main/res/drawable/notification_icon.png" />
<config-file parent="/manifest/application/" target="app/src/main/AndroidManifest.xml">
            <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЧрд▓рдд рдерд╛ред

@alarv рдХреБрдЫ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рдХреЗ рд▓рд┐рдП рдЖрдЗрдХрди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдорджрдж рдХрд░реЗрдВред

рдЕрд░реЗ @bioyeneye рдХреМрди рд╕реЗ рдореЙрдбрд▓ рд╣реИрдВ? рд╡реЗ Android рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ? рд╕реНрдЯреЙрдХ рдпрд╛ рдЕрдиреНрдп?

@bioyeneye рдореЗрд░реЗ рдкрд╛рд╕ рд╕рднреА Android рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ionic 4 рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЙрдкрд╛рдп рд╣реИред
рдореИрдВ рдЖрдЗрдХрди рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд▓рд┐рдП рдкреАрдПрдирдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреАрдЖрдИрдЖрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

'res/drawable-hdpi',
'res/drawable-mdpi',
'res/drawable-xhdpi',
'res/drawable-xxhdpi',
'res/drawable-xxxhdpi',
'res/mipmap-hdpi',
'res/mipmap-mdpi',
'res/mipmap-xhdpi',
'res/mipmap-xxhdpi',
'res/mipmap-xxxhdpi'

рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБ:
android_notification_resources.js

рдЗрд╕ рдирдИ рд╣реБрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:


// рд╢реБрд░реВ
рдХреЙрдиреНрд╕реНрдЯ рдПрдлрдПрд╕ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдПрдлрдПрд╕");
рдХреЙрдиреНрд╕реНрдЯ рдкрде = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдкрде");
рдХреЙрдиреНрд╕реНрдЯ рдХреНрдпреВ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдХреНрдпреВ");

var sourceDir = 'рд╕рдВрд╕рд╛рдзрди/рдПрдВрдбреНрд░реЙрдЗрдб/рдЕрдзрд┐рд╕реВрдЪрдирд╛_рдЖрдЗрдХрди'; // рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдкрдХрд╛ рдЖрдЗрдХрди рд╣реИ
var platformDir = 'рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо/рдПрдВрдбреНрд░реЙрдЗрдб/рдРрдк/src/main/';
рд╡рд░ рд╕рдВрд╕рд╛рдзрдирдбрд╛рдпрд░реНрд╕ = [
'рд░реЗрд╕/рдбреНрд░рд╛рдПрдмрд▓-рдПрдЪрдбреАрдкреАрдЖрдИ',
'рд░реЗрд╕/рдбреНрд░рд╛рдПрдмрд▓-рдПрдордбреАрдкреАрдЖрдИ',
'res/drawable-xhdpi',
'рд░реЗрд╕/рдбреНрд░рд╛рдПрдмрд▓-xxhdpi',
'res/drawable-xxxhdpi',
'рд░реЗрд╕/рдорд┐рдкрдореИрдк-рдПрдЪрдбреАрдкреАрдЖрдИ',
'рд░реЗрд╕/рдорд┐рдкрдореИрдк-рдПрдордбреАрдкреАрдЖрдИ',
'рд░реЗрд╕/рдорд┐рдкрдореИрдк-xhdpi',
'рд░реЗрд╕/рдорд┐рдкрдореИрдк-xxhdpi',
'рд░реЗрд╕/рдорд┐рдкрдореИрдк-xxxhdpi'
];

рдореЙрдбреНрдпреВрд▓.рдПрдХреНрд╕рдкреЛрд░реНрдЯреНрд╕ = рдлрд╝рдВрдХреНрд╢рди (рд╕реАрдЯреАрдПрдХреНрд╕) {

рдЕрдЧрд░ (ctx.opts.platforms.indexOf('android') < 0) {
рд╡рд╛рдкрд╕реА;
}

рд╡рд░ рдЖрд╕реНрдердЧрд┐рдд = Q. defer ();
var androidPlatformDir = path.join(ctx.opts.projectRoot, platformDir);
var customResourcesDir = path.join(ctx.opts.projectRoot, sourceDir);

рдлрдВрдХреНрд╢рди рдХреЙрдкреА (src, dest) {
рд╡рд░ рдЖрд╕реНрдердЧрд┐рдд = Q. defer ();

fs.stat(src, function(err, stats) {
  if (err || !stats.isFile()) {
    return deferred.reject(err);
  }

  fs.stat(path.dirname(dest), function(err, stats) {
    if (err || !stats.isDirectory()) {
      return deferred.reject(err);
    }

    var rs = fs.createReadStream(src);

    rs.on('error', function(err) {
      console.error(err.stack);
      deferred.reject(err);
    });

    var ws = fs.createWriteStream(dest);

    ws.on('error', function(err) {
      console.error(err.stack);
      deferred.reject(err);
    });

    ws.on('close', function() {
      deferred.resolve();
    });

    rs.pipe(ws);
  });
});

return deferred.promise;

}

fs.stat(customResourcesDir, function(err, stats) {
рдЕрдЧрд░ (рдЧрд▓рддреА || !stats.isDirectory ()) {
рд╡рд╛рдкрд╕реА рдЖрд╕реНрдердЧрд┐рддред рд╕рдорд╛рдзрд╛рди ();
}

fs.readdir(customResourcesDir, function(err, files) {
  var copies = [];

  for (var i in files) {
    for (var j in resourceDirs) {
      var filePath = path.join(ctx.opts.projectRoot, sourceDir, files[i]);
      var destPath = path.join(androidPlatformDir, resourceDirs[j], files[i]);

      copies.push([filePath, destPath]);
    }
  }

  copies.map(function(args) {
    return copy.apply(copy, args);
  });

  Q.all(copies).then(function(r) {
    deferred.resolve();
  }, function(err) {
    console.error(err.stack);
    deferred.reject(err);
  });
});

});

рд╡рд╛рдкрд╕реА рдЖрд╕реНрдердЧрд┐рддредрд╡рд╛рджрд╛;
}
// рд╕рдорд╛рдкреНрдд


рдЕрдкрдиреЗ config.xml рдореЗрдВ рдЕрдкрдирд╛ рд╣реБрдХ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝реЗрдВ:

рд╣реБрдХ рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛ рдЕрдкрдиреЗ рдЖрдЗрдХрди рдХреЛ рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдбреНрд░реЙрдПрдмрд▓ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗред рдЕрдм рддрдХ рд╕рдм рдареАрдХ рд╣реИред

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдЪрд┐рдпрд░реНрд╕

@RobinGiel рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЖрдпрдирд┐рдХ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдирдорд╕реНрддреЗ @Flucadetena
рдПрдВрдбреНрд░реЙрдЗрдб 9
рдХреЙрд░реНрдбреЛрд╡рд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо: рдПрдВрдбреНрд░реЙрдЗрдб 7.1.1

@bioyeneye рдореИрдВ рднреА рдЖрдпрдирд┐рдХ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪреВрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛ рджреВрдВрдЧрд╛ред ;)

@bioyeneye рд╣рд╛рдБ рдпрд╣ рд╣реЛрдЧрд╛, рдЖрдкрдХреЛ рд╣реБрдХ рд╕реЗ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

var sourceDir = 'рд╕рдВрд╕рд╛рдзрди/рдПрдВрдбреНрд░реЙрдЗрдб/рдЕрдзрд┐рд╕реВрдЪрдирд╛_рдЖрдЗрдХрди';
var platformDir = 'рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо/рдПрдВрдбреНрд░реЙрдЗрдб';

рдФрд░ рд╢рд╛рдпрдж const Q = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("q"); рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп; рдЙрд╕ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ .. рдЙрджрд╛рд╣рд░рдг:

рдореЙрдбреНрдпреВрд▓.рдПрдХреНрд╕рдкреЛрд░реНрдЯреНрд╕ = рдлрд╝рдВрдХреНрд╢рди (рд╕реАрдЯреАрдПрдХреНрд╕) {

рдЕрдЧрд░ (ctx.opts.platforms.indexOf('android') < 0) {
рд╡рд╛рдкрд╕реА;
}

рд╡рд░ рдХреНрдпреВ = ctx.requireCordovaModule('q'); // рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ
рд╡рд░ рдЖрд╕реНрдердЧрд┐рдд = Q. defer ();
var androidPlatformDir = path.join(ctx.opts.projectRoot, platformDir);
var customResourcesDir = path.join(ctx.opts.projectRoot, sourceDir);


config.xml рдореЗрдВ рдПрдХ рд╣реА рд╣реБрдХ рдХреЛ рдкрд╣рд▓реЗ_рдмрд┐рд▓реНрдб рдФрд░ рдкрд╣рд▓реЗ_рд░рди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

<hook type="before_run"         src="hooks/android_notification_resources.js" />
<hook type="before_build"       src="hooks/android_notification_resources.js" />

рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб config.xml <platform name="android"> рдЯреИрдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЗрдХрди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

<config-file parent="/manifest/application/" target="app/src/main/AndroidManifest.xml">
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдореИрд╕реЗрдЬрд┐рдВрдЧ рдкреИрдирд▓ рдпрд╛ рдмреИрдХ-рдПрдВрдб рджреНрд╡рд╛рд░рд╛ рдкреЗрд▓реЛрдб рдкрд░ рдХреЛрдИ рдЖрдЗрдХрди рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред
рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд░реАрдбрдореЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рддреБрдордиреЗ рдмрд╕ рдореЗрд░рд╛ рджрд┐рди рдмрдирд╛ рджрд┐рдпрд╛,

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬреИрд╕реЗ

рдПрдПрдкреАрдЯреА: рддреНрд░реБрдЯрд┐: рдЕрдирдмрд╛рдЙрдВрдб рдЙрдкрд╕рд░реНрдЧред

рдлрд┐рд░ The . рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

xmlns:android = " http://schemas.android.com/apk/res/android "

config.xml рдХреЗ рдЕрдВрджрд░ рд░реВрдЯ рдЯреИрдЧ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП

рдпрд╣ рдпрд╣рд╛рдБ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдХрди рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрд╕рдХрд╛ рдЙрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ 256x256 рдЬреЛрдбрд╝рд╛ рд╣реИ рдлрд┐рд░ рднреА рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдмрд┐рдВрджреБ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдХреЛ рдиреАрдЪреЗ рдХреА рдУрд░ рдЦреАрдВрдЪрдирд╛ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ

рдпрд╣ рд╣реИ

рддреБрдо рдореЗрд░реЗ рдЬреАрд╡рди рд░рдХреНрд╖рдХ рд╣реЛ !! рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!!!
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:
рдореИрдВ рд░рдВрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ: '# e50012' рдЖрдЗрдХрди рдХреЗ рд░рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВред (рдЗрд╕реЗ рдЕрдкрдиреЗ рд░рдВрдЧ рдореЗрдВ рдмрджрд▓реЗрдВ)ред
рднреВрддрдкреВрд░реНрд╡:
{
"рдирд╛рдо": "my_notification",
"рдЕрдзрд┐рд╕реВрдЪрдирд╛": {
"рдмреЙрдбреА": "рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдмреЙрдбреА",
"рд╢реАрд░реНрд╖рдХ": "рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╢реАрд░реНрд╖рдХ",
"рд░рдВрдЧ": "#e50012"
},
"рдЖрдВрдХрдбрд╝реЗ":{ ... }
}

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕