从PUSH通知打开Android应用程序

时间:2012-04-17 15:57:53

标签: android push-notification android-pendingintent urbanairship.com

有一点问题一直困扰着我..

我已经设置了我的应用程序以接收来自Urban Airship的PUSH通知并且一切正常,但是当我点击通知中心的通知时,没有任何反应。

我希望我的应用在用户点按PUSH通知时打开 - 我该怎么做才能实现这一目标?

任何帮助都会受到高度赞赏。

由于

4 个答案:

答案 0 :(得分:9)

创建待处理的Intent以启动活动,并使用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);

可以找到更多信息here

答案 1 :(得分:1)

您需要使用自定义通知构建器并将您的某个活动用作PendingIntent。

https://docs.urbanairship.com/android-lib/reference/com/urbanairship/push/CustomPushNotificationBuilder.html

答案 2 :(得分:1)

在他们的一个示例项目(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);
    }

}

答案 3 :(得分:0)

在调用.setAutoCancel(true);

之前,必须先调用未决的Intent。

看看我的建造者:

    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);