我爲GCM推送通知編寫了IntentService。 我收到消息,但顯示我的通知給用戶時出現了問題。 這裏是我的代碼:Android通知未顯示
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.support.v4.app.NotificationCompat;
import android.support.v4.app.TaskStackBuilder;
import android.util.Log;
public class GcmIntentService extends IntentService {
public static final int NOTIFICATION_ID = 1;
public GcmIntentService() {
super("GcmIntentService");
}
public static final String TAG = "GCM test";
@Override
protected void onHandleIntent(Intent intent) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String messageType = gcm.getMessageType(intent);
if (!intent.getExtras().isEmpty()) { // has effect of unparcelling Bundle
if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
sendNotification("Send error: " + intent.getExtras().toString());
} else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
sendNotification("Deleted messages on server: " + intent.getExtras().toString());
// If it's a regular GCM message, do some work.
} else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
// Post notification of received message.
sendNotification("message:\n" + intent.getStringExtra("message"));
Log.i(TAG, "Received: " + intent.getExtras().toString());
}
}
// Release the wake lock provided by the WakefulBroadcastReceiver.
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
private void sendNotification(String msg) {
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_notif)
.setContentTitle("My notification")
.setContentText(msg);
Intent resultIntent = new Intent(this, PopupMessageActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(PopupMessageActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
}
我沒有看到這個錯誤。我的意思是,我複製了Androids developer guide的代碼。
此代碼所做的唯一事情就是在手機的通知欄中顯示小圖標(本例中爲「ic_notif」)。 但是沒有彈出給用戶的文本或通知。
我使用android-studio。 我的調試設備是一個帶有android 4.0.3(API 15)的huawai u8666e。 至少我想這個API級別是我的這個應用程序的最低要求。
如果您拖動通知欄,該怎麼辦?文字是否顯示在那裏? 「不......通知......彈出」是什麼意思? –
當我向下拖動通知欄時,文本正在顯示。這是一個正常的行爲爲Android?對不起,我是一名iPhone用戶,並且是android開發人員的新手。我認爲,如果你與建設者建立一個消息,就像在iOS屏幕上的彈出窗口... – user4878754
是的,這是正常的和正確的。我會建議儘快閱讀更多有關Android UI設計模式的文章。這兩個系統之間有很多不同之處,Android用戶不想看到iOS設計模式(反之亦然)。我已經在下面解釋了一些。 –