【问题标题】:UrbanAirship push notification with custom icon带有自定义图标的 UrbanAirship 推送通知
【发布时间】:2017-06-27 21:53:33
【问题描述】:

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

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

【问题讨论】:

    标签: android push-notification urbanairship.com


    【解决方案1】:

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

    "notification": {
       "alert": "Notification alert",
    
       "android": {
         "extra": {
            "url": "some url"
          }
       }
    }
    

    如果你使用 composer,你可以在 android overrides 下设置 extras。

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

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

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

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

    【讨论】:

    • 我正在使用远程视图来定制我的通知。在视图内部,我有一个 ImageView。我只想将图标放在该图像视图中。因此,如果我对图像 url 进行硬编码,一切都会好起来的。在这种情况下,我使用 picasso 通过该 url 获取图标并将该东西放在同一个 imageView 中。但我的问题是我无法从城市飞艇 Pushmessage 有效负载中获取图像 url,因为它们没有任何获取方法来检索 url。
    • 您可以将 URL 作为额外的 URL 发送到 SDK,并在 SDK 8.5+ 上使用 message.getExtra("icon_url", null) 获取它
    【解决方案2】:

    将此方法粘贴到您的课程中:

    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 在您的应用程序中获取它。检查此链接:

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

    【讨论】:

    • 感谢您的回答 Zohaib。我从服务器检索图标没有任何问题。我正在为此使用毕加索。但我的问题是获取自身的 url。我从 urbanairship 服务器获取推送消息有效负载,但有效负载没有任何获取器来检索图标 url。如果我没有说清楚,请告诉我
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多