如何使用离子生成信号的图标

时间:2017-06-22 12:10:04

标签: 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_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));
        }
    });
});

我不知道。

请建议我,

由于

1 个答案:

答案 0 :(得分:0)

我遇到过同样的问题。您的方法是正确的,将030_copy_android_notification_icons.js文件放在{root}/hooks/after_prepare下。另请注意,文件名并不重要。

然后要运行脚本,您需要在评论下面运行:

ionic cordova prepare android

这样,您的脚本就会运行。但也许你的问题可能与我的相似。如果您使用Windows,在处理从resources/android/icon/platforms/android/res/的文件时,由于缺少目标文件夹,脚本无法复制操作。这就是为什么应该在代码中添加一个简单的代码。

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