gpt4 book ai didi

Android CGM 收到推送通知后启动 Activity

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:43 24 4
gpt4 key购买 nike

收到 Push Notification 后,我想在按下 Notification 时打开一个 Àactivity

这是我的服务:

public class GCMIntentService extends GcmListenerService {
@Override
public void onMessageReceived(String from, Bundle data) {
String title = data.getString("title");
String message = data.getString("message");

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(message)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setTicker(message)
.setAutoCancel(true);

mBuilder.setDefaults(Notification.DEFAULT_LIGHTS);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);


Intent myIntent = new Intent(this, MyActivity.class);
PendingIntent intent2 = PendingIntent.getBroadcast(this, 1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(intent2);

notificationManager.notify(1, mBuilder.build());
}



public class GCMIDListenerService extends InstanceIDListenerService {
@Override
public void onTokenRefresh() {
InstanceID instanceID = InstanceID.getInstance(this);
String token;
try {
token = instanceID.getToken(Resources.getSystem().getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
} catch (IOException e) {
e.printStackTrace();
}
//TODO:send token to the server
}
}

我只是按照 Google 文档做了所有事情。我之前为另一个项目实现了该功能,但有点不同,我使用了我自己的“BroadcastReceiver”,而不是 Google 提供的“com.google.android.gms.gcm.GcmReceiver”。

这是我的 list :

<application>

...

<!-- GCM Push Notifications Config -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="gcm" />
</intent-filter>
</receiver>
<service
android:name=".push.GCMIntentService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".push.GCMIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>


</application>

有什么想法吗?我错过了什么吗?

这里是我遵循的一些文档:

Google official documentation

CGM tutorial By Dustin Rothwell

当然,我在 stackoverflow 上进行了很多研究。

谢谢!

最佳答案

你犯了一个小错误。您正在为打开 Activity 编写此代码。

PendingIntent intent2 = PendingIntent.getBroadcast(this, 1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(intent2);

当您想要打开 Activity 时,您需要使用 getActivity 方法而不是 getBroadcast 方法创建挂起的 Intent 。

希望这会有所帮助。

关于Android CGM 收到推送通知后启动 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161173/

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