【发布时间】:2012-02-20 10:56:02
【问题描述】:
如何将Android中的通知消息更改为本地化? 我只想更改从 Urban AirShip 收到的消息,然后它才会显示在通知栏上?
【问题讨论】:
-
你想修改来自服务器的消息吗???
-
是的,我只需要在通知方法显示之前更改消息。
标签: android notifications urbanairship.com
如何将Android中的通知消息更改为本地化? 我只想更改从 Urban AirShip 收到的消息,然后它才会显示在通知栏上?
【问题讨论】:
标签: android notifications urbanairship.com
您可以使用此方法:PushManager.shared().setNotificationBuilder(null); 并使用 SDK 的 android 通知发送您自己的通知
【讨论】:
是的,一旦您收到来自 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));
}
}
}
【讨论】:
我找到了解决方案,它有点脏,但我知道我需要使用它。 在收到 Urban AirShip 的通知后,我取消所有并发送我自己的更改消息。
【讨论】:
我阅读了答案并想出了一个综合解决方案。
您想禁用 UrbanAirship 的默认通知处理程序。如果您这样做,它根本不会生成并向您显示通知。
PushManager.shared().setNotificationBuilder(null);(使用 David T 的建议)
您想构建自己的通知。这可以在您的IntentReceiver 中完成。 This 链接可以解决问题。
希望这对其他人有所帮助。
【讨论】:
请使用该代码禁用 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);
【讨论】: