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

时间:2016-02-23 10:27:35

标签: android amazon-web-services unity3d push-notification google-cloud-messaging

我正在使用Amazon SNS控制台发送Android移动推送通知。我确实收到了推送通知,但只显示了正文消息,标题没有显示。当触摸通知时,应用程序没有打开。我正在使用Amazon AWS SDK for Unity。

2 个答案:

答案 0 :(得分:3)

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

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

以下是一个简单的示例:

@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());
}

答案 1 :(得分:0)

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

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

别忘了将UnityPlayerProxyActivity放入Android清单中。