Android上未显示OneSignal-Pushnotification小图标

时间:2016-08-19 08:38:50

标签: android cordova push-notification android-drawable onesignal

我们有一个Cordova-App,它在每个drawable-xy文件夹中都包含一个'icon.png'文件。我们使用OneSignal提供推送通知。通知按预期工作。除了小图标。手机顶部栏上只有一个空白图标,显示应用程序符号。我尝试使用以下代码段:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';

@NgModule({
    declarations: [AppComponent],
    imports: [BrowserModule],
    bootstrap: [AppComponent]
})
export class AppModule { }

我还尝试过很多很多没有“android”的变体,没有“drawable”,没有斜线,带有.png和没有.png。等等。

我在文档中找到了这个:(https://documentation.onesignal.com/reference#create-notification

{
   ...
   "small_icon" : "@android:drawable/icon.png"
   ....
}

Android讲述了可绘制资源:(https://developer.android.com/guide/topics/resources/drawable-resource.html

将图像保存在res / drawable / myimage.png中,此布局XML将图像应用于视图:

small_icon: stringOptional
Specific Android icon to use. If blank the app icon is used. Must be the drawable resource name.

那对我来说应该是<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" /> 。 (不起作用)

将大图标更改为网址对我而言,带有可绘制的大图标也不适用。

此属性@drawable/icon的正确用法是什么?

2 个答案:

答案 0 :(得分:3)

小图标是Android资源,是没有文件扩展名或路径的名称。在您的情况下,您需要在发送到OneSignal create notification REST API调用的JSON有效负载中设置"small_icon" : "icon"

对于Cordova,您需要将图标文件放在<project-root>/platforms/android/res中。每个分辨率应该有一个,并使用Android Asset Studio建议的方式来创建这个小图标。如果您将名称设置为ic_stat_onesignal_default,OneSignal SDK将使用它来处理所有OneSignal通知,除非您在JSON消息中覆盖它。例如,其中一个图标文件的完整路径应为<project-root>/platforms/android/res/drawable-hdpi-v11/ic_stat_onesignal_default.png

有关详细信息,请参阅OneSignal的Customize Notification Icons指南。

答案 1 :(得分:2)

Android SDK API 21之后,您的小图标必须如下

enter image description here

仅白色和透明。

所以,你可以编码。

<script type="text/javascript">
        function Person(){}
        Person.prototype.name="aa";
        Person.prototype.sayName=function(){
            alert(this.name);
        }
        var person1=new Person();
        person1.name="bb";
        alert(person1.sayName());
    </script>
相关问题