1

如何将Android中的通知消息更改为本地化?我只想更改从 Urban AirShip 获得的消息,然后它才会显示在通知栏上?

4

5 回答 5

7

您可以使用此方法:PushManager.shared().setNotificationBuilder(null);并使用 SDK 的 android 通知发送您自己的通知

于 2012-03-04T10:45:06.503 回答
0

我阅读了答案并提出了一个综合解决方案。

  1. 您想禁用 UrbanAirship 的默认通知处理程序。如果您这样做,它根本不会生成并向您显示通知。 PushManager.shared().setNotificationBuilder(null);(使用 David T 的建议)

  2. 您想构建自己的通知。这可以在您的IntentReceiver. 这个链接可以解决问题。

希望这对其他人有帮助。

于 2014-06-03T06:51:57.563 回答
0

我找到了解决方案,它有点脏,但我知道我需要使用它。在收到 Urban AirShip 的通知后,我取消了所有并发送了我自己的更改消息。

于 2012-02-20T12:28:14.233 回答
0

请使用该代码禁用 Urban Airship 的通知,覆盖 BasicPushNotificationBuilder:

BasicPushNotificationBuilder nb = new BasicPushNotificationBuilder() {
    @Override
    public Notification buildNotification(String alert,
            Map<String, String> extras) {
        return null;
    }
};
// Disable notifications
PushManager.shared().setNotificationBuilder(nb);
于 2014-08-28T07:05:57.017 回答
0

是的,一旦您收到来自 Urban AirShip 的消息供您在应用程序中内部使用,您就可以修改该消息, 但无法在通知栏中显示修改后的消息

您可以在IntentReceiver中查看消息

public class IntentReceiver extends BroadcastReceiver {

    private static final String logTag = "Hey";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(logTag, "Received intent: " + intent.toString());
        String action = intent.getAction();

        if (action.equals(PushManager.ACTION_PUSH_RECEIVED)) {

                int id = intent.getIntExtra(PushManager.EXTRA_NOTIFICATION_ID, 0);

          Log.v(logTag, "Received push notification. Alert: " + intent.getStringExtra(PushManager.EXTRA_ALERT)
                + ". Payload: " + intent.getStringExtra(PushManager.EXTRA_STRING_EXTRA) + ". NotificationID="+id);

               //can get your message here

        } else if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) {

            Log.v(logTag, "User clicked notification. Message: " + intent.getStringExtra(PushManager.EXTRA_ALERT)+ ".Payload:" + intent.getStringExtra("PushManager.EXTRA_STRING_EXTRA"));


            Intent launch = new Intent(Intent.ACTION_MAIN);

            UAirship.shared().getApplicationContext().startActivity(launch);

        } else if (action.equals(PushManager.ACTION_REGISTRATION_FINISHED)) {
            Log.i(logTag, "Registration complete. APID:" + intent.getStringExtra(PushManager.EXTRA_APID)
                    + ". Valid: " + intent.getBooleanExtra(PushManager.EXTRA_REGISTRATION_VALID, false));


        }

            }
}
于 2012-02-20T11:30:23.590 回答