gpt4 book ai didi

android - 在 Android 中显示推送通知

转载 作者:行者123 更新时间:2023-11-30 01:53:06 26 4
gpt4 key购买 nike

我想创建一个具有推送通知功能的应用。

我所做的是在谷歌中注册应用

并存储来自app的resisted device id

并从服务器发送通知。

一切正常。

我向已注册的设备发送推送。

而且我不知道在推送到来时如何显示推送通知。

最佳答案

您需要实现 GcmListenerService ,下面是一个例子:

/**
* Service used for receiving GCM messages. When a message is received this service will log it.
*/
public class GcmService extends GcmListenerService {
private final int PN_ID = 993;

Booking mBooking;

private static final String TYPE = "type";
private static final String TITLE = "title";
private static final String MESSAGE = "body";

private NotificationManager mNotificationManager;

public GcmService() {

}

@Override
public void onMessageReceived(String from, final Bundle data) {

String type = data.getString(TYPE, "");
final String title = data.getString(TITLE, "");
final String message = data.getString(MESSAGE, "");

if (title.length() > 0 || message.length() > 0) {
sendNotification(PN_ID, title, message);
}
}

@Override
public void onDeletedMessages() {
sendNotification(PN_ID, "Deleted messages on server", "");
}

@Override
public void onMessageSent(String msgId) {
sendNotification(PN_ID, "Upstream message sent. Id=" + msgId, "");
}

@Override
public void onSendError(String msgId, String error) {
sendNotification(PN_ID, "", "Upstream message send error. Id=" + msgId + ", error" + error);
}

// Post a notification indicating whether a doodle was found.
private void sendNotification(int notificationId, String title, String msg) {
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);


PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, MainActivity.class), 0);


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


mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(notificationId, mBuilder.build());
}


}

在你的manifest里面注册它<application>和其他一样Service

    <service
android:name=".services.GcmService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</service>

您至少需要这些权限,我怀疑您甚至可能需要 WAKE_LOCK .

<!-- PUSH NOTIFICATIONS -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

<permission
android:name="au.com.myapp.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>

<uses-permission android:name="au.com.myapp.permission.C2D_MESSAGE"/>

在此设置中,您发送到 GCM 服务的负载将如下所示:

{       
"registration_ids":[],
"data": {
"title" : "Hello",
"message" : "World",
}
}

在哪里registration_ids是您要将消息发送到的设备,data Bundle 中将交付给您的是什么.

关于android - 在 Android 中显示推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com