Я только что внедрил приложение GCM, которое показывает уведомление при поступлении сообщения GCM. как запустить приложение при поступлении сообщения? такой же, как и вибер. вы получаете всплывающее окно, когда приходит сообщение.Как запустить приложение вместо создания уведомления при получении сообщения GCM?
EDIT:
Большое спасибо за помогает, но я предполагаю, что большинство из вас, ребята объяснили требуют, чтобы пользователь, чтобы нажать на уведомления для того, чтобы запустить приложение. Мне нужно, чтобы активность автоматически запускалась, как только сообщение GCM поступает независимо от того, какое приложение находится на переднем плане или даже когда приложение находится в фоновом режиме или killstate.
вот мой GCMIntentService код:
package com.google.android.gcm.demo.app;
import com.google.android.gms.gcm.GoogleCloudMessaging;
import android.app.IntentService;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;
public class GCMIntentService extends IntentService {
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;
public GCMIntentService() {
super("GcmIntentService");
}
public static final String TAG = "GCM Demo";
@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()) { // has effect of unparcelling Bundle
/*
* Filter messages based on message type. Since it is likely that GCM will be
* extended in the future with new message types, just ignore any message types you're
* not interested in, or that you don't recognize.
*/
if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
sendNotification("Send error: " + extras.toString());
} else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
sendNotification("Deleted messages on server: " + extras.toString());
// If it's a regular GCM message, do some work.
} else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
// This loop represents the service doing some work.
for (int i = 0; i < 5; i++) {
Log.i(TAG, "Working... " + (i + 1)
+ "/5 @ " + SystemClock.elapsedRealtime());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime());
startActivity(new Intent(getBaseContext(), DemoActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
Intent myIntent = new Intent(getBaseContext(), DemoActivity.class);
startActivity(myIntent);
// Post notification of received message.
//sendNotification("Received: " + extras.toString());
Log.i(TAG, "Received: " + extras.toString());
Toast.makeText(getApplicationContext(), extras.toString(), Toast.LENGTH_LONG).show();
}
}
// Release the wake lock provided by the WakefulBroadcastReceiver.
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
// Put the message into a notification and post it.
// This is just one simple example of what you might choose to do with
// a GCM message.
private void sendNotification(String msg) {
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, DemoActivity.class), 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_stat_gcm)
.setContentTitle("GCM Notification")
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(msg))
.setContentText(msg);
Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
}
См эту ссылку .. [Ссылка] (http://stackoverflow.com/questions/13716723/open-application-after-clicking-on-notification) – droidd
Создать и отобразите его при получении сообщения GCM вместо уведомления. – WISHY
использовать широковещательный приемник вместо ожидающего намерения – dipali