修改 Android 推送通知 (GCN) 中操作栏中的应用图标

Posted

技术标签:

【中文标题】修改 Android 推送通知 (GCN) 中操作栏中的应用图标【英文标题】:Amend the app icon in action bar in Android push notifications (GCN) 【发布时间】:2014-03-05 12:05:03 【问题描述】:

我想将图像添加到通过 Google Cloud Notifications 发送到应用程序的远程通知中。

我正在通过 php 向 Google 发送通知。这本身似乎与我找到的文档不太匹配,它告诉我发送一个“消息”参数,而实际上它是显示在应用程序上的“警报”。

下面是我的 PHP 代码:

public function send_notification($registation_ids, $message)  
    // Set POST variables
    $url = 'https://android.googleapis.com/gcm/send';

    echo 'Message: '.$message.'<br>';

    $fields = array(
        'registration_ids' => $registation_ids,
        'data' => array(
            'message' => $message,
            'alert' => $message
        )
    );

    $headers = array(
        'Authorization: key=' . GOOGLE_API_KEY,
        'Content-Type: application/json'
    );
    // Open connection
    $ch = curl_init();

    // Set the url, number of POST vars, POST data
    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Disabling SSL Certificate support temporarly
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

    // Execute post
    $result = curl_exec($ch);
    if ($result === FALSE) 
        return curl_error($ch);
    

    // Close connection
    curl_close($ch);
    return $result;

我原以为我只需要随有效负载一起发送一个图标,但我找不到任何文档来支持这一点。

另一种选择是将图标放在应用程序本身上,然后在有效负载中调用一个变量来引用该图标,但也找不到任何支持该图标的文档。

附带说明,该应用是使用 Corona SDK 构建的,但我不确定它的相关性。

任何帮助将不胜感激。谢谢

【问题讨论】:

【参考方案1】:

Corona 会在项目的根目录中查找特定的文件名并使用它。有 3 种文件名格式,每种都有不同 DPI 的多个版本。目前,据我所知,您无法根据警报的有效负载更改此图标。

白色,适用于 Android 3.0+

IconNotificationDefault-ldpi-v11.png
IconNotificationDefault-mdpi-v11.png
IconNotificationDefault-hdpi-v11.png
IconNotificationDefault-xhdpi-v11.png   

灰色,适用于 Android 2.3-3.0

IconNotificationDefault-ldpi-v9.png
IconNotificationDefault-mdpi-v9.png
IconNotificationDefault-hdpi-v9.png
IconNotificationDefault-xhdpi-v9.png

黑色,其他一切

IconNotificationDefault-ldpi.png
IconNotificationDefault-mdpi.png
IconNotificationDefault-hdpi.png
IconNotificationDefault-xhdpi.png

【讨论】:

【参考方案2】:

您可以从服务器发送您想要的任何数据,只要您发送的数据不超过 4K。 至于你应该发送message还是alert,这完全取决于客户端的代码,因为那是查找这些参数并使用它们的值的代码。

要直接使用有效负载发送图标,您必须将图像编码为字符串并将该字符串包含在有效负载中(假设它是一个足够小的图像)。您的应用必须解码该字符串才能显示图标。您的另一个选项,发送对图标的引用,更有意义。同样,必须处理该引用的是客户端(应用程序)代码。

【讨论】:

好的。这是有道理的,但由于这是一个 Corona 应用程序,我似乎没有那种控制权。也就是说,这不是一个独特的问题,因此必须有一种方法来更改使用的图标。目前是警告符号(中间有感叹号的三角形),看起来很不对。 @mikemike 你不能访问显示通知的代码吗?我对 Corona 不熟悉,所以我不确定您正在开发哪个部分以及您按原样使用哪个部分。 您似乎无法临时更改图标,但您可以将其更改为默认值。在编译的项目中查找特定的文件名。不过还是谢谢

以上是关于修改 Android 推送通知 (GCN) 中操作栏中的应用图标的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 自定义操作系统中未收到 FCM 推送通知

为各种 Android 操作系统版本设置推送通知图标

Android oreo - 推送通知崩溃

手机间隙中的android推送通知没有收到通知

推送通知是否在设置中被禁用后传递到Android手机?

在 android 中推送通知:无法从 GCMIntentService 调用 Toast