我使用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"
});
如果我正在使用远程url,应用程序将被迫停止。任何人都可以帮我解决这个问题。
假设您已将图标.png存储在res目录中!
有两种方法可以用于直接指向res文件夹及其内容:
- res://drawable/icon2.png:指向res文件夹及其子文件夹drawable本身
- file://res/drawable/koala6.jpg:从平台目录的根目录开始,指向另一个图标
我使用了两个50x50大小的图标,它们存储在:平台/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)。
当您想通过url:显示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)来显示它们
希望这能有所帮助。
将你的icon.png文件放在src\assets\img目录中,用于图标,将小图标放在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);