UrbanAirship 带有自定义图标的推送通知

UrbanAirship push notification with custom icon

我最近开始为我的公司使用 Urban Airship。我必须为推送通知创建自定义布局。我的问题是我需要获取图像的 url 才能使用 Picasso 在远程视图中设置图标。每个人都使用资源文件夹中的可绘制对象来设置通知图标。此外,我没有找到任何 getter 方法可以给我图像 url.

此外,我找不到任何解决相同问题的好例子。

您需要额外发送 URL。使用 push API:

的示例
"notification": {
   "alert": "Notification alert",

   "android": {
     "extra": {
        "url": "some url"
      }
   }
}

如果您使用的是作曲家,则可以在 android 覆盖下设置附加功能。

然后在设备上您可以使用以下方式访问额外内容:

String url = message.getExtra("url", null);

或者,如果您使用的是旧版 SDK:

String url = message.getPushBundle().getString("url");

将此方法粘贴到您的 class:

public Bitmap getBitmapFromURL(String strURL) {
try {
    URL url = new URL(strURL);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoInput(true);
    connection.connect();
    InputStream input = connection.getInputStream();
    Bitmap myBitmap = BitmapFactory.decodeStream(input);
    return myBitmap;
} catch (IOException e) {
    e.printStackTrace();
    return null;
}
}

调用此方法从 url:

获取位图
Bitmap bitmap = getBitmapFromURL("https://graph.facebook.com/YOUR_USER_ID/picture?type=large"); // Change the url with your own url.

然后在您的通知对象中将此图像设置为:

builder.setLargeIcon(bitmap);

Urban Airship 也有发送和接收多个值的方法,你可以通过 Payload 发送值(字符串、声音名称、Json 等)。我建议您将 url 作为键值对发送到 Json 中,并通过 Json 在您的应用程序中获取它。检查这个 link:

https://docs.urbanairship.com/reference/libraries/python/1.0.0/push.html#notification-payload