有个小问题一直困扰着我。。
我已经将我的应用程序设置为接收来自 Urban Airship 的 PUSH 通知,并且一切正常,但是当我在通知中心点击通知时,什么也没有发生。
我希望我的应用程序在用户点击推送通知时打开 - 我可以做些什么来实现这一点?
一如既往地非常感谢任何帮助。
谢谢
有个小问题一直困扰着我。。
我已经将我的应用程序设置为接收来自 Urban Airship 的 PUSH 通知,并且一切正常,但是当我在通知中心点击通知时,什么也没有发生。
我希望我的应用程序在用户点击推送通知时打开 - 我可以做些什么来实现这一点?
一如既往地非常感谢任何帮助。
谢谢
创建一个挂起的 Intent 以启动 Activity 并使用 setLatestEventInfo 在通知中设置它。
例子:
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
更多信息可以在这里找到
您需要使用自定义通知构建器并将您的一项活动用作 PendingIntent。
按照他们的示例项目之一(https://github.com/urbanairship/android-samples/tree/master/app/src/main/java/com/urbanairship/sample),您可以扩展 AirshipReceiver 类,然后覆盖onReceive 方法。这对我有用:
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
String action = intent.getAction();
if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) {
Intent launch = new Intent(Intent.ACTION_MAIN);
launch.setClass(UAirship.shared().getApplicationContext(), MyHome.class);
launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
launch.putExtra("doWhatever",true);
UAirship.shared().getApplicationContext().startActivity(launch);
}
}
您必须在调用 .setAutoCancel(true) 之前调用 pendingIntent;
看看我的建设者:
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(),channel_id).setSmallIcon(R.drawable.logo).setSound(uri).setVibrate(new long[]{1000,1000,1000,1000,1000})
.setOnlyAlertOnce(true).setContentIntent(pendingIntent).setAutoCancel(true);