# রিচ মিডিয়ার অ্যাপিয়ারেন্স কাস্টমাইজ করা

## সংক্ষিপ্ত বিবরণ

রিচ মিডিয়া পেজগুলির অ্যাপিয়ারেন্স কাস্টমাইজ করে সেগুলিকে আপনার অ্যাপের স্টাইলের সাথে পুরোপুরি মানানসই করে তুলুন। আপনার ইন-অ্যাপ মেসেজের ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করুন, কিছু অ্যানিমেশন যোগ করুন, অথবা লোডিং ভিউকে অ্যাপ লেআউটের সাথে সামঞ্জস্যপূর্ণ করুন। ইন-অ্যাপগুলিকে অ্যাপের একটি নেটিভ কম্পোনেন্টের মতো দেখিয়ে ব্যবহারকারীর অভিজ্ঞতা উন্নত করুন।

## ইমপ্লিমেন্টেশন

প্রথমে, **RichMediaStyle** ক্লাসের একটি ইনস্ট্যান্স নিন:

#### iOS

```objective-c
PWRichMediaStyle *style = [PWRichMediaManager sharedManager].richMediaStyle;
```

#### Android

```java
RichMediaStyle style = RichMediaManager.getRichMediaStyle();
```

### ব্যাকগ্রাউন্ডের রঙ

অ্যাপের ব্যবহারকারীদের দেখানো রিচ মিডিয়া পেজগুলির **ব্যাকগ্রাউন্ডের রঙ পরিবর্তন** করে ইন-অ্যাপ মেসেজগুলিকে আপনার অ্যাপের একটি অবিচ্ছেদ্য অংশ হিসেবে দেখান।

<img src="/content-customizing-rich-media-appearance-1.webp" alt="অ্যাপ ডিজাইনের সাথে মিলে যাওয়া কাস্টমাইজড ব্যাকগ্রাউন্ড রঙের সাথে রিচ মিডিয়া ইন-অ্যাপ মেসেজ"/>

#### iOS

```objective-c
style.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2f];
```

#### Android

```java
style.setBackgroundColor(ContextCompat.getColor(getApplication(), R.color.black));
```

ব্যাস!

### অ্যানিমেশন

**রিচ মিডিয়ার অ্যাপিয়ারেন্স অ্যানিমেট** করে আপনার ইন-অ্যাপ মেসেজের প্রভাব বাড়ান।

<video src="/content-customizing-rich-media-appearance-2.webm" title="" autoplay loop muted playsinline />

#### iOS

অ্যানিমেশন ডেলিগেটকে ডিফল্ট ক্লাসগুলির মধ্যে একটিতে সেট করুন:

* `PWRichMediaStyleSlideLeftAnimation`,
* `PWRichMediaStyleSlideRightAnimation`,
* `PWRichMediaStyleSlideTopAnimation`,
* `PWRichMediaStyleSlideBottomAnimation`,
* `PWRichMediaStyleCrossFadeAnimation`.

```objective-c
style.animationDelegate = [PWRichMediaStyleCrossFadeAnimation new];
```

<Aside type="note">
ডিফল্টরূপে, iOS-এর জন্য অ্যানিমেশন টাইপের মান হলো `PWRichMediaStyleAnimationTypeSlideBottom`।
</Aside>

#### Android

অ্যানিমেশন ডেলিগেটকে ডিফল্ট ক্লাসগুলির মধ্যে একটিতে সেট করুন:

* `RichMediaAnimationSlideTop`,
* `RichMediaAnimationSlideBottom`,
* `RichMediaAnimationSlideRight`,
* `RichMediaAnimationSlideLeft`,
* `RichMediaAnimationCrossFade`.

```java
richMediaStyle.setRichMediaAnimationType(new RichMediaAnimationSlideTop());
```

<Aside type="note">
ডিফল্টরূপে, Android-এর জন্য অ্যানিমেশন টাইপের মান হলো `RichMediaAnimationSlideBottom`।
</Aside>

**কাস্টম অ্যানিমেশন** সেট করতে, iOS-এর জন্য `PWRichMediaStyleAnimationDelegate` মেথড অথবা Android-এর জন্য `RichMediaAnimation` নিম্নরূপভাবে ইমপ্লিমেন্ট করুন:

#### iOS

১. অ্যানিমেশন ডেলিগেট সেট করুন:

```objective-c
style.animationDelegate = self;
```

২. `PWRichMediaStyleAnimationDelegate` মেথডগুলি ইমপ্লিমেন্ট করুন (একটি **কমপ্লিশন ব্লক** কল করতে ভুলবেন না):

```objective-c
- (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

`RichMediaAnimation` ইন্টারফেস ইমপ্লিমেন্ট করুন এবং কাস্টম রিচ মিডিয়া ক্লোজ এবং ওপেন অ্যানিমেশনের জন্য এটি সেট করুন:

```java
richMediaStyle.setRichMediaAnimation(new RichMediaAnimation() {
    //কাস্টম রিচ মিডিয়া ওপেন অ্যানিমেশনের জন্য নিয়ম এবং আচরণ সেট করার অনুমতি দেয়
    @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);
    }
 
    //কাস্টম রিচ মিডিয়া ক্লোজ অ্যানিমেশনের জন্য নিয়ম এবং আচরণ সেট করার অনুমতি দেয়
    @Override
    public void closeAnimation(View contentView, View parentView, Animation.AnimationListener endAnimationListener) {
        // !গুরুত্বপূর্ণ!
        // Pushwoosh SDK-কে অ্যানিমেশন শেষ হওয়ার ইভেন্টটি হ্যান্ডেল করতে দেওয়ার জন্য আপনার কাস্টম অ্যানিমেশনে endAnimationListener যোগ করতে হবে
        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);
    }
});
```

### কাস্টম লোডিং ভিউ

আপনার ইন-অ্যাপ মেসেজের **কাস্টমাইজড লোডিং ভিউ** দিয়ে প্রথম সেকেন্ড থেকেই ব্যবহারকারীর মনোযোগ আকর্ষণ করুন।

<video src="/content-customizing-rich-media-appearance-3.webm" title="" autoplay loop muted playsinline />

#### iOS

১. `loadingViewBlock` নিম্নরূপভাবে ব্যবহার করুন:

```objective-c
style.loadingViewBlock = ^PWLoadingView *{
    return [[[NSBundle mainBundle] loadNibNamed:@"LoadingView" owner:self options:nil] lastObject];
};
```

২. এখানে "LoadingView" অবশ্যই PWLoadingView (PWRichMediaStyle.h-এ সংজ্ঞায়িত) থেকে ইনহেরিট করতে হবে:

<img src="/content-customizing-rich-media-appearance-4.webp" alt="Xcode ইন্টারফেস যা ক্লাস হায়ারার্কিতে PWLoadingView থেকে ইনহেরিট করা LoadingView ক্লাস দেখাচ্ছে"/>

৩. আউটলেট সেট করুন:

<img src="/content-customizing-rich-media-appearance-5.webp" alt="Xcode ইন্টারফেস যা LoadingView কাস্টম প্রপার্টিজের জন্য আউটলেট কানেকশন দেখাচ্ছে"/>

#### Android

`RichMediaStyle.LoadingViewCreatorInterface` একটি মেথড ইমপ্লিমেন্ট করে যা রিচ মিডিয়ার জন্য লোডিং স্ক্রিন হিসেবে ব্যবহার করার জন্য একটি ভিউ রিটার্ন করে:

```java
richMediaStyle.setLoadingViewCreator(() -> {
  View screenView = createYourScreenView();
  return screenView;
});
```

### ক্লোজ বাটন সক্রিয়করণে বিলম্ব

রিচ মিডিয়া লোড না হওয়া পর্যন্ত **ক্লোজ বাটন নিষ্ক্রিয়** করে নিশ্চিত করুন যে ইন-অ্যাপ মেসেজটি ব্যবহারকারীদের দেখানো হয়েছে।

<video src="/content-customizing-rich-media-appearance-6.webm" title="" autoplay loop muted playsinline />

#### iOS

```objective-c
style.closeButtonPresentingDelay = 3;
```

#### Android

```java
// মিলিসেকেন্ডে একটি মান সেট করুন
richMediaStyle.setTimeOutBackButtonEnable(3000);
```