如何更改离子2本地推送通知图标?

时间:2017-01-24 07:02:50

标签: cordova ionic-framework ionic2 cordova-plugins

我使用ionic2创建了一个混合应用,因为我正在使用cordova本地推送通知。

一切正常工作的东西都不能改变图标,在下面我把代码粘贴在这里。

LocalNotifications.schedule({
        id:1,
        title: "Test Title",
        text: "Push Notification",
        icon: "res://icon.png",
        at: new Date(new Date().getTime() + 5 * 1000),
        sound: null,
        every: "minute"          
    });

我也试过以下代码。

 LocalNotifications.schedule({
        id:1,
        title: "Test Title",
        text: "Push Notification",
        icon: "http://icons.iconarchive.com/icons/treetog/junior/256/camera-icon.png",
        at: new Date(new Date().getTime() + 5 * 1000),
        sound: null,
        every: "minute"          
    });

如果我使用远程网址,应用程序被迫停止。任何人都帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

假设您已将 icon.png 存储在 res 目录中!

您可以使用两种方法指向 res 文件夹及其内容:

  • res://drawable/icon2.png :指向res文件夹及其子文件夹自行绘制
  • file://res/drawable/koala6.jpg :从平台目录的根目录开始,并指向另一个图标

我使用了两个50x50大小的图标存储在: platforms / android / res / drawable

并命名为: koala6.jpg icon2.png

但您可以将图标存储在 res 的任何子目录中。

您可以使用上面显示的方法之一显示这两个图像中的一个:

LocalNotifications.schedule({
    id:1,
    title: "Test Title",
    text: "Push Notification",

    // method 1:
    icon: 'res://drawable/icon2', 

    // method 2:
    //icon: "file://res/drawable/koala6", 

    at: new Date(new Date().getTime() + 5 * 1000),
    sound: null,
    every: "second"
});

此示例显示图像扩展名(.png,.jpg)被遗漏。

如果您想通过网址显示50x50图片:

AndroidManifest.xml 中定义一些权限:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.ionic.starter" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.TriggerReceiver" />
        <receiver android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.ClearReceiver" />
        <activity android:exported="false" android:launchMode="singleInstance" android:name="de.appplant.cordova.plugin.localnotification.ClickActivity" android:theme="@android:style/Theme.NoDisplay" />
        <receiver android:exported="false" android:name="de.appplant.cordova.plugin.notification.TriggerReceiver" />
        <receiver android:exported="false" android:name="de.appplant.cordova.plugin.notification.ClearReceiver" />
        <receiver android:exported="false" android:name="de.appplant.cordova.plugin.localnotification.RestoreReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
        <activity android:exported="false" android:launchMode="singleInstance" android:name="de.appplant.cordova.plugin.notification.ClickActivity" android:theme="@android:style/Theme.NoDisplay" />
    </application>
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- these two are added -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

然后您可以使用图像扩展名(.png,.jpg)

来显示它们

希望这有帮助。

答案 1 :(得分:0)

将你的icon.png文件放在src \ assets \ img目录中,图标和小图标put icon.png文件放在platforms \ android \ res \ drawable目录下

this.notification = {
    id: inc++,
    title: 'your title',
    text: "your text",
    icon:'file://assets/img/icon.png',
    smallIcon:'res://icon',
    sound: 'file://assets/sounds/sms.mp3',
    data: { mydata: 'My hidden message this is' },
    at: timestamp
};
this.notifications.push(this.notification);