4

アーバンエアシップではCustomPushNotificationBuilder、アイコンを簡単に変更するなど、ステータスバーの通知に変更を加える場合は、カスタム通知を作成することをお勧めします。

残念ながら、for通知を使用すると、テキストの色やプライベートリソース(Honeycomb / ICSなど)への参照などRemoteView、カスタムメーカーやプラットフォーム固有のスキンに関連する多くの望ましくない影響が生じます。@*android:drawable/notify_panel_notification_icon_bg_tile

を使用せずにアイコンを交換する簡単な方法が必要RemoteViewです。どのように?

4

3 に答える 3

9

をオーバーライドBasicPushNotificationBuilderすることで、アイコンを非常に簡単に設定できることがわかりました。

BasicPushNotificationBuilder nb = new BasicPushNotificationBuilder() {
    @Override
    public Notification buildNotification(String alert,
            Map<String, String> extras) {
        Notification notification = super.buildNotification(alert,
                extras);
        // The icon displayed in the status bar
        notification.icon = R.drawable.notification;
        // The icon displayed within the notification content
        notification.contentView.setImageViewResource(
                android.R.id.icon, R.drawable.notification);
        return notification;
    }
};
// Set the custom notification builder
PushManager.shared().setNotificationBuilder(nb);
于 2012-05-19T14:29:08.660 に答える
1

これは古い質問ですが、UrbanAirshipは頻繁に更新されるため、このページにアクセスする可能性のある他のユーザーを支援することにしました。バージョン6.0.1の時点では、これBasicNotificationBuilder以上ありません。アイコンや色などで通知をカスタマイズするには、クラスを拡張し、メソッドNotifcationFactoryをオーバーライドする必要があります。createNotification

以下の例に示すように:

public class MyNotificationFactory extends NotificationFactory {

public MyNotificationFactory(Context context){
    super(context);
}

@Override
public Notification createNotification(PushMessage pushMessage, int i) {
    NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext())
            .setContentTitle(getContext().getResources().getString(R.string.app_name))
            .setContentText(pushMessage.getAlert())
            .setSmallIcon(R.drawable.your_icon_here)
            .setColor(getContext().getResources().getColor(R.color.your_color_here))
            .setAutoCancel(true);

    return builder.build();
}

@Override
public int getNextId(PushMessage pushMessage) {
    return NotificationIDGenerator.nextID();
}

}

最後に、これをアプリケーションクラスまたはUAを初期化した場所でUrbanAirshipの新しい通知ファクトリとして設定する必要があります。

UAirship.shared().getPushManager().setNotificationFactory(new MyNotificationFactory(getApplicationContext()));
于 2015-04-17T12:13:13.600 に答える
1

デフォルトの通知ファクトリには、大きなスタイル(受信トレイ、テキスト、画像)、ロリポップ機能(プライバシー、優先度)、インタラクティブな通知ボタンなど、多くの機能が用意されています。アイコンとアクセントカラーのみを設定しようとしている場合は、次のことをお勧めします。

    UAirship.takeOff(this, new UAirship.OnReadyCallback() {
        @Override
        public void onAirshipReady(UAirship airship) {
            // Perform any airship configurations here

            // Create a customized default notification factory
            DefaultNotificationFactory defaultNotificationFactory = new DefaultNotificationFactory(getApplicationContext());
            defaultNotificationFactory.setSmallIconId(R.drawable.ic_notification);
            defaultNotificationFactory.setColor(NotificationCompat.COLOR_DEFAULT);

            // Set it
            airship.getPushManager().setNotificationFactory(defaultNotificationFactory);
        }
    });

クラスの完全なドキュメントはここにあります-http://docs.urbanairship.com/reference/libraries/android/latest/reference/com/urbanairship/push/notifications/DefaultNotificationFactory.html

于 2015-04-17T16:26:57.497 に答える