Настройка внешнего вида rich media
Обзор
Anchor link toНастройте внешний вид rich media страниц, чтобы они идеально соответствовали стилю вашего приложения. Измените цвет фона ваших in-app сообщений, добавьте анимацию или настройте экран загрузки в соответствии с дизайном приложения. Улучшите пользовательский опыт, сделав in-app сообщения похожими на нативный компонент приложения.
Реализация
Anchor link toСначала получите экземпляр класса RichMediaStyle:
PWRichMediaStyle *style = [PWRichMediaManager sharedManager].richMediaStyle;
Android
Anchor link toRichMediaStyle style = RichMediaManager.getRichMediaStyle();
Цвет фона
Anchor link toСделайте так, чтобы in-app сообщения выглядели как неотъемлемая часть вашего приложения, изменив цвет фона rich media страниц, отображаемых пользователям.

style.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2f];
Android
Anchor link tostyle.setBackgroundColor(ContextCompat.getColor(getApplication(),R.color.balck));
Готово!
Анимация
Anchor link toУсильте эффект от ваших in-app сообщений, анимировав появление rich media.

Установите делегат анимации на один из стандартных классов:
PWRichMediaStyleSlideLeftAnimation
,PWRichMediaStyleSlideRightAnimation
,PWRichMediaStyleSlideTopAnimation
,PWRichMediaStyleSlideBottomAnimation
,PWRichMediaStyleCrossFadeAnimation
.
style.animationDelegate = [PWRichMediaStyleCrossFadeAnimation new];
Android
Anchor link toУстановите делегат анимации на один из стандартных классов:
RichMediaAnimationSlideTop
,RichMediaAnimationSlideBottom
,RichMediaAnimationSlideRight
,RichMediaAnimationSlideLeft
,RichMediaAnimationCrossFade
.
richMediaStyle.setRichMediaAnimationType(new RichMediaAnimationSlideTop());
Чтобы задать пользовательскую анимацию, реализуйте метод PWRichMediaStyleAnimationDelegate
для iOS или RichMediaAnimation
для Android, как показано ниже:
1. Установите делегат анимации:
style.animationDelegate = self;
2. Реализуйте методы PWRichMediaStyleAnimationDelegate
(не забудьте вызвать блок завершения):
- (void)runPresentingAnimationWithContentView:(UIView *)contentView parentView:(UIView *)parentView completion:(dispatch_block_t)completion { contentView.transform = CGAffineTransformMakeTranslation(0, parentView.bounds.size.height);
[UIView animateWithDuration:0.6 delay:0 usingSpringWithDamping:0.4 initialSpringVelocity:0 options:0 animations:^{ contentView.transform = CGAffineTransformIdentity; } completion:^(BOOL finished) { completion(); }];}
- (void)runDismissingAnimationWithContentView:(UIView *)contentView parentView:(UIView *)parentView completion:(dispatch_block_t)completion { [UIView animateWithDuration:0.3 animations:^{ contentView.alpha = 0.0f; contentView.transform = CGAffineTransformMakeScale(2, 2); } completion:^(BOOL finished) { completion(); }];}
Android
Anchor link toРеализуйте интерфейс RichMediaAnimation
и установите его для пользовательской анимации открытия и закрытия Rich Media:
richMediaStyle.setRichMediaAnimation(new RichMediaAnimation() { // Позволяет задать правила и поведение для пользовательской анимации открытия Rich Media @Override public void openAnimation(View contentView, View parentView) { AnimationSet fadeInAnimation = new AnimationSet(true); fadeInAnimation.addAnimation(new TranslateAnimation(0.15f * parentView.getWidth(), 0, parentView.getHeight() / 2.5f, 0)); fadeInAnimation.addAnimation(new AlphaAnimation(0, 1)); fadeInAnimation.addAnimation(new ScaleAnimation(0.7f, 1.0f, 0.7f, 1.0f)); fadeInAnimation.setDuration(2000); fadeInAnimation.setInterpolator(new DecelerateInterpolator(1f));
contentView.startAnimation(fadeInAnimation); }
// Позволяет задать правила и поведение для пользовательской анимации закрытия Rich Media @Override public void closeAnimation(View contentView, View parentView, Animation.AnimationListener endAnimationListener) { // !ВАЖНО! // endAnimationListener должен быть добавлен в вашу пользовательскую анимацию, чтобы Pushwoosh SDK мог обработать событие окончания анимации AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0); alphaAnimation.setDuration(2000); alphaAnimation.setAnimationListener(endAnimationListener); alphaAnimation.setFillEnabled(true); alphaAnimation.setFillAfter(true);
contentView.animate().translationY(parentView.getHeight() / 5).setDuration(250).start();
parentView.startAnimation(alphaAnimation); }});
Пользовательский экран загрузки
Anchor link toПривлеките внимание пользователя с первых секунд с помощью настроенного экрана загрузки для ваших In-App сообщений.

1) Используйте loadingViewBlock
следующим образом:
style.loadingViewBlock = ^PWLoadingView *{ return [[[NSBundle mainBundle] loadNibNamed:@"LoadingView" owner:self options:nil] lastObject];};
2) Здесь “LoadingView” должен наследоваться от PWLoadingView (определенного в PWRichMediaStyle.h):

3) Настройте аутлеты:

Android
Anchor link toRichMediaStyle.LoadingViewCreatorInterface
реализует метод, который возвращает View, используемый в качестве экрана загрузки для Rich Media:
richMediaStyle.setLoadingViewCreator(() -> { View screenView = createYourScreenView(); return screenView;});
Задержка включения кнопки закрытия
Anchor link toУбедитесь, что In-App сообщение будет показано пользователям, отключив кнопку закрытия до тех пор, пока Rich Media не загрузится.

style.closeButtonPresentingDelay = 3;
Android
Anchor link to// установите значение в миллисекундахrichMediaStyle.setTimeOutBackButtonEnable(3000);