Ionic2 如何使用ionic为onesignal生成图标

Ionic2 如何使用ionic为onesignal生成图标,ionic2,Ionic2,我用的是离子2 我需要生成一个信号通知图标 我试着解决这个问题 在名为030_copy_android_notification_icons.js的after_prepare文件夹中的hooks目录中添加一个文件 将以下代码放入其中: var filestocopy = [{ "resources/android/icon/drawable-hdpi-icon.png": "platforms/android/res/drawable-hdpi/ic_stat_onesi

我用的是离子2

我需要生成一个信号通知图标

我试着解决这个问题

在名为030_copy_android_notification_icons.js的after_prepare文件夹中的hooks目录中添加一个文件

将以下代码放入其中:

var filestocopy = [{
    "resources/android/icon/drawable-hdpi-icon.png":
        "platforms/android/res/drawable-hdpi/ic_stat_onesignal_default.png"
}, {
    "resources/android/icon/drawable-mdpi-icon.png":
        "platforms/android/res/drawable-mdpi/ic_stat_onesignal_default.png"
}, {
    "resources/android/icon/drawable-xhdpi-icon.png":
        "platforms/android/res/drawable-xhdpi/ic_stat_onesignal_default.png"
}, {
    "resources/android/icon/drawable-xxhdpi-icon.png":
        "platforms/android/res/drawable-xxhdpi/ic_stat_onesignal_default.png"
}, {
    "resources/android/icon/drawable-xxxhdpi-icon.png":
        "platforms/android/res/drawable-xxxhdpi/ic_stat_onesignal_default.png"
} ];

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

// no need to configure below
var rootdir = process.argv[2];

filestocopy.forEach(function(obj) {
    Object.keys(obj).forEach(function(key) {
        var val = obj[key];
        var srcfile = path.join(rootdir, key);
        var destfile = path.join(rootdir, val);
        //console.log("copying "+srcfile+" to "+destfile);
        var destdir = path.dirname(destfile);
        if (fs.existsSync(srcfile) && fs.existsSync(destdir)) {
            fs.createReadStream(srcfile).pipe(
                fs.createWriteStream(destfile));
        }
    });
});
我不知道

请给我提个建议


谢谢

我也遇到过同样的问题。您的方法是正确的,将
030\u copy\u android\u notification\u icons.js
文件放在
{root}/hooks/after\u prepare
下。还要注意,文件名并不重要

然后,要运行脚本,您需要运行以下注释:

ionic cordova prepare android
这样,您的脚本将运行。但也许你的问题和我的相似。如果使用windows,在将文件从
resources/android/icon/
复制到
platforms/android/res/
时,由于缺少目标文件夹,脚本无法复制操作。这就是为什么要在代码中添加一个简单的代码

var destdir = path.dirname(destfile);
if (!fs.existsSync(destdir)){
  fs.mkdirSync(destdir);
}