Как изменить значок push-уведомления по умолчанию на маленький значок в Onesignal в ionic 3? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть проблема, чтобы изменить маленький значок push-уведомления. Onesignal в ionic 3, я пробовал этот урок https://documentation.onesignal.com/docs/customize-notification-icons, https://ionicframework.com/docs/native/onesignal/ и https://github.com/OneSignal/OneSignal-Cordova-SDK/issues/341#issuecomment-382648188,, но потерпел неудачу, маленький значок в моемpush-уведомление по-прежнему по умолчанию имеет значение onesignal.

Это структура моей папки и мой сценарий:

Структура моей папки :

enter image description here

copy_android_notification_icons.js :

#!/usr/bin/env node

var fs = require('fs');
var path = require('path');

var rootDest = 'platforms/android/app/src/main/res';
var files = [{
    'icon_onesignal/res/drawable-hdpi/ic_stat_onesignal_default.png':
        path.join(rootDest, 'drawable-hdpi/ic_stat_onesignal_default.png')
}, {
    'icon_onesignal/res/drawable-mdpi/ic_stat_onesignal_default.png':
        path.join(rootDest, 'drawable-mdpi/ic_stat_onesignal_default.png')
}, {
    'icon_onesignal/res/drawable-xhdpi/ic_stat_onesignal_default.png':
        path.join(rootDest, 'drawable-xhdpi/ic_stat_onesignal_default.png')
}, {
    'icon_onesignal/res/drawable-xxhdpi/ic_stat_onesignal_default.png':
        path.join(rootDest, 'drawable-xxhdpi/ic_stat_onesignal_default.png')
}, {
    'icon_onesignal/res/drawable-xxxhdpi/ic_stat_onesignal_default.png':
        path.join(rootDest, 'drawable-xxxhdpi/ic_stat_onesignal_default.png')
}];

function createFolder(pathAbsolute) {
  if (!fs.existsSync(pathAbsolute)) {
    fs.mkdirSync(pathAbsolute);
  }

  console.log('Folder ready ', pathAbsolute);
}

module.exports = function(context) {
  var root = context.opts.projectRoot;

  createFolder(path.join(root, rootDest, 'drawable-hdpi'));
  createFolder(path.join(root, rootDest, 'drawable-mdpi'));
  createFolder(path.join(root, rootDest, 'drawable-xhdpi'));
  createFolder(path.join(root, rootDest, 'drawable-xxhdpi'));
  createFolder(path.join(root, rootDest, 'drawable-xxxhdpi'));

  files.forEach(function(obj) {
    Object.keys(obj).forEach(function(key) {
      var src = path.join(root, key);
      var dest = path.join(root, obj[key]);

      if (fs.existsSync(src) && fs.existsSync(path.dirname(dest))) {
        fs.createReadStream(src).pipe(fs.createWriteStream(dest));

        console.log('Copied ' + src + ' to ' + dest);
      }
    });
  });
};

app.components.ts

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

import { HomePage } from '../pages/home/home';
@Component({
  templateUrl: 'app.html'
})
export class MyApp {
  rootPage:any = HomePage;

  constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {
    platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      statusBar.styleDefault();
      splashScreen.hide();

      var notificationOpenedCallback = function(jsonData) {
        console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData));
      };

      window["plugins"].OneSignal
        .startInit("xxxx-yyyy-zzzz-123, "1234567")
        .handleNotificationOpened(notificationOpenedCallback)
        .endInit();
    });
  }
}

config.xml

<platform name="android">
        <allow-intent href="market:*" />
        <hook src="hooks/copy_android_notification_icons.js" type="after_prepare" />
</platform>

Пожалуйста, исправьте мою папку или мой скрипт, возможно, вы найдете ошибку и, пожалуйста, помогите решить эту проблему.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вы можете выполнить следующие шаги.Тогда вам не нужно дотрагиваться до папки вашей платформы и вручную добавлять значки push-уведомлений.

  • Перейдите на Android Asset Studio и сгенерируйте значки, используя имя ic_stat_onesignal_default
  • Затем скопируйте эти значки в папку Android под ресурсами.В моем случае это выглядит так:

enter image description here

  • Затем в файле config.xml добавьте код ниже.
<!-- Add to your existing android platform sction -->
<platform name="android">      
    <resource-file src="resources/android/notification/drawable-mdpi/ic_stat_onesignal_default.png" target="app/src/main/res/drawable-mdpi/ic_stat_onesignal_default.png" />
    <resource-file src="resources/android/notification/drawable-hdpi/ic_stat_onesignal_default.png" target="app/src/main/res/drawable-hdpi/ic_stat_onesignal_default.png" />
    <resource-file src="resources/android/notification/drawable-xhdpi/ic_stat_onesignal_default.png" target="app/src/main/res/drawable-xhdpi/ic_stat_onesignal_default.png" />
    <resource-file src="resources/android/notification/drawable-xxhdpi/ic_stat_onesignal_default.png" target="app/src/main/res/drawable-xxhdpi/ic_stat_onesignal_default.png" />
    <resource-file src="resources/android/notification/drawable-xxxhdpi/ic_stat_onesignal_default.png" target="app/src/main/res/drawable-xxxhdpi/ic_stat_onesignal_default.png" />
</platform>
  • Снова постройте проект.

Теперь значок push-уведомлений по умолчанию заменит новый.

Подробнее см. OneSignal DOC

0 голосов
/ 24 сентября 2018

Я работал на OneSignal на прошлой неделе и делал то же самое, что и вы.Для Уведомления существуют определенные размеры.

Генерация из активов Android или через Интернет здесь .

Размеры должны быть установлены:

Small Notification Icon (mdpi)- 24x24
Small Notification Icon (hdpi)- 36x36
Small Notification Icon (xhdpi)- 48x48
Small Notification Icon (xxhdpi) - 72x72
Small Notification Icon (xxxhdpi)-96x96

Также , помните, что вы должны поместить все значки в папку платформы.Для этого перейдите на - platform/android/app/src/main/res/.

Создать папку для рисования, если ее там нет.Имя должно быть как - drawable-mdpi, drawable-hdpi и т. Д.

enter image description here

Примечание имя, которое вы используете для icon.

Теперь , На панели сигнального сигнала используйте имя в маленьких значках.Пример

enter image description here

Надеюсь, что это решит вашу проблему.

...