Amazon SNS GCM 推送通知中没有标题

Posted

技术标签:

【中文标题】Amazon SNS GCM 推送通知中没有标题【英文标题】:No title in Amazon SNS GCM push notification 【发布时间】:2016-02-23 10:27:34 【问题描述】:

我正在使用 Amazon SNS 控制台发送 android 移动推送通知。我确实收到了推送通知,但只显示正文消息,不显示标题。此外,当触摸通知时,应用程序也没有打开。我正在使用适用于 Unity 的 Amazon AWS 开发工具包。

【问题讨论】:

请提供您的代码。 "GCM": " \"data\": \"message\": \"Hi\", \"title\": \"TestTile\" " in Amazon SNS 控制台 docs.aws.amazon.com/sns/latest/dg/mobile-push-gcm.html 我关注了文档,所以只有我收到推送。另外我使用的是 unity3D 而不是 java eclipse android。但是当点击通知时,应用程序没有打开。 【参考方案1】:

如果您共享一些代码会很棒,但据我了解,您希望接收带有标题和正文消息的推送,因此您必须先检索它。

当您在服务中收到推送意图时,您应该调用 intent.getExtras().getString("title")。如果您想在单击推送通知时打开应用程序,您应该在通知 Intent 中进行设置。

下面是一个简单的例子:

@Override
protected void onHandleIntent(Intent intent) 
    Bundle extras = intent.getExtras();
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
    // The getMessageType() intent parameter must be the intent you received
    // in your BroadcastReceiver.
    String messageType = gcm.getMessageType(intent);
    if (!extras.isEmpty() && messageType != null)  
        switch (messageType) 
            case GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR:
                Toast.makeText(this, GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR, Toast.LENGTH_SHORT).show();
                break;
            case GoogleCloudMessaging.MESSAGE_TYPE_DELETED:
                Toast.makeText(this, GoogleCloudMessaging.MESSAGE_TYPE_DELETED, Toast.LENGTH_SHORT).show();
                break;
            case GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE: // retrieve your data here
                Log.d("onHandleIntent", "Message= " + extras.getString("message"));
                Log.d("onHandleIntent", "Title= " + extras.getString("title"));
                sendNotification(extras.getString(message), extras.getString(title));
          
    
    PushBroadcastReceiver.completeWakefulIntent(intent);


private void sendNotification(String msg, String title) 
    NotificationManager mNotificationManager = (NotificationManager)
            this.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent notificationIntent = new Intent(this, MainActivity.class); // activity wich you want to open when click on push notification
    notificationIntent.putExtra(NOTIFICATION_TAG, msg);
    notificationIntent.putExtra(NOTIFICATION_TITLE_TAG, title);
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK  | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_notifications)
                    .setContentTitle(title)
                    .setAutoCancel(true)
                    .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(msg))
                    .setContentText(msg);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

【讨论】:

【参考方案2】:

正如@Jarik 所说,您必须这样做。

另外假设你面临同样的问题,创建一个 jar 文件,其类扩展 gcm 侦听器或回调使用的任何类(现在不记得名称,打开它们的类文件,你会发现 java 类扩展gcm 接收器),然后使用意图来打开应用程序的通知触摸。这也可以让您使用标题功能。我发现在亚马逊 sns sdk 类文件中不知何故,他们用“”覆盖了标题,因此标题似乎总是空白。

不要忘记将 UnityPlayerProxyActivity 放在 Android 清单中。

【讨论】:

以上是关于Amazon SNS GCM 推送通知中没有标题的主要内容,如果未能解决你的问题,请参考以下文章

向 Amazon SNS 移动推送服务注册移动/Android 终端节点

推送通知在 Amazon SNS 中不起作用

将推送通知迁移到 FCM 或 Amazon SNS?

Amazon SNS GCM/FCM 消息负载

Amazon SNS 静默推送

使用 Amazon SNS 在 Android GCM 中仅接收默认消息