Android SDK কাস্টমাইজ করুন
ডিপ লিঙ্কিং
Anchor link toআপনার যে অ্যাক্টিভিটি ডিপ লিঙ্ক হ্যান্ডেল করবে, সেখানে <data> ট্যাগ যোগ করুন এবং scheme, host, এবং pathPrefix প্যারামিটার দিন।
<activity android:name=".PromoActivity" android:label="PromoActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="com.pushwoosh" android:host="promotion" android:pathPrefix="" /> </intent-filter></activity>উপরের উদাহরণে, ডিপ লিঙ্কটি PromoActivity খুলবে। নিচের বেসিক ইমপ্লিমেন্টেশনটি সরলতার জন্য প্রোমো আইডি ভ্যালু সহ একটি অ্যালার্ট দেখায়। আপনার অ্যাপ্লিকেশনে এটি অবশ্যই আরও কার্যকর কিছু করতে পারে!
public class PromoActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.deep_link); setTitle("Deep link activity");
Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData();
if (TextUtils.equals(action, Intent.ACTION_VIEW)) { openUrl(data); } }
private void openUrl(Uri uri) { String promoId = uri.getQueryParameter("id"); Toast.makeText(getApplicationContext(), promoId, Toast.LENGTH_LONG).show(); }}ইন-অ্যাপ পারচেজ ট্র্যাকিং
Anchor link toআপনি যদি কাস্টমার জার্নিতে ইন-অ্যাপ পারচেজ ট্র্যাক করতে চান, তাহলে এই মেথডটি কল করে Pushwoosh-এ পারচেজ তথ্য পাঠানোর জন্য কনফিগার করুন:
Pushwoosh.getInstance().sendInappPurchase(@NonNull String sku, @NonNull BigDecimal price, @NonNull String currency);জিওজোন পুশ নোটিফিকেশন
Anchor link toজিওজোন পুশ ব্যবহার করার জন্য, com.pushwoosh:pushwoosh-location লাইব্রেরি যোগ করুন এবং কল করুন:
PushwooshLocation.startLocationTracking();আপনার AndroidManifest.xml-এ প্রয়োজনীয় পারমিশনগুলো অন্তর্ভুক্ত করুন:
<manifest ... > <!-- Required for geolocation-based push notifications --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Required for precise location tracking --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Required for background location access on Android 10 (API level 29) and higher --> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /></manifest>Pushwoosh-এর সাথে লোকাল নোটিফিকেশন ব্যবহার
Anchor link toআপনি যদি Pushwoosh Local Notifications API ব্যবহার করেন, তাহলে আপনার AndroidManifest.xml-এ RECEIVE_BOOT_COMPLETED পারমিশন যোগ করুন:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>xAndroid-এ ব্যাজ নম্বর ব্যবহার
Anchor link toPushwoosh নিম্নলিখিত Android লঞ্চারগুলির জন্য অ্যাপ আইকন শর্টকাটে ব্যাজ নম্বর সেট করা সমর্থন করে:
Sony, Samsung, LG, HTC, ASUS, ADW, APEX, NOVA, HUAWEI, ZUK, OPPO।
এই কার্যকারিতা ব্যবহার করতে, আপনার অ্যাপ্লিকেশনে com.pushwoosh:pushwoosh-badge লাইব্রেরি যোগ করুন।
কাস্টম অ্যাক্টিভিটি খোলা
Anchor link toআপনি যদি পুশ নোটিফিকেশনের প্রতিক্রিয়ায় একটি নির্দিষ্ট অ্যাক্টিভিটি শুরু করতে চান, তাহলে সেই অ্যাক্টিভিটিতে নিম্নলিখিত intent-filter যোগ করুন:
<activity android:name="YourActivity"> <intent-filter> <action android:name="${applicationId}.MESSAGE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter></activity>লগ লেভেল নিয়ন্ত্রণ
Anchor link toডিবাগিং এবং ইন্টিগ্রেশনে সহায়তা করার জন্য, SDK ডিফল্টভাবে কনসোলে সমস্ত অনুরোধ প্রিন্ট করবে। আপনি যখন প্রোডাকশন বিল্ডের জন্য প্রস্তুত হবেন, তখন AndroidManifest.xml-এ “ERROR” ভ্যালু সহ com.pushwoosh.log_level মেটা-ডেটা যোগ করুন। এইভাবে শুধুমাত্র ত্রুটির তথ্য কনসোলে যাবে। অন্যান্য বিকল্পগুলি নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
NONE - SDK থেকে কোনো লগ নেই
ERROR - কনসোলে শুধুমাত্র ত্রুটি প্রদর্শন করুন
WARN - সতর্কতাও প্রদর্শন করুন
INFO - তথ্যমূলক বার্তা প্রদর্শন করুন
DEBUG - এখন ডিবাগ তথ্যও প্রদর্শিত হয়
NOISE - SDK যা কিছু প্রিন্ট করতে পারে এবং আরও অনেক কিছু
<meta-data android:name="com.pushwoosh.log_level" android:value="ERROR" />Proguard ব্যবহার
Anchor link toProguard ব্যবহার করার সময়, নিম্নলিখিত বিকল্পগুলি যোগ করুন:
-keep class com.pushwoosh.** { *; }-dontwarn com.pushwoosh.**Proguard সম্পর্কিত Google Play Services লাইব্রেরির প্রয়োজনীয়তা এখানে দেখুন:
https://developers.google.com/android/guides/setup
নোটিফিকেশন খোলার আচরণ কাস্টমাইজ করা
Anchor link toপুশ নোটিফিকেশনের ফলে কোন অ্যাক্টিভিটি প্রদর্শন করতে হবে তা যদি প্রোগ্রাম্যাটিকভাবে নির্বাচন করার প্রয়োজন হয়, আপনি একটি কাস্টম NotificationServiceExtension তৈরি করতে পারেন এবং আপনার NotificationServiceExtension-এর সম্পূর্ণ কোয়ালিফাইড ক্লাস নামটি com.pushwoosh.notification_service_extension ভ্যালুর অধীনে মেটাডেটাতে অন্তর্ভুক্ত করতে পারেন।
<meta-data android:name="com.pushwoosh.notification_service_extension" android:value="com.your.package.YourNotificationServiceExtension" />public class YourNotificationServiceExtension extends NotificationServiceExtension { @Override protected void startActivityForPushMessage(PushMessage message) { // super.startActivityForPushMessage() starts default launcher activity // or activity marked with ${applicationId}.MESSAGE action. // Simply do not call it to override this behaviour. // super.startActivityForPushMessage(message);
// start your activity instead: Intent launchIntent = new Intent(getApplicationContext(), YourActivity.class); launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// (Optional) pass notification data to Activity launchIntent.putExtra(Pushwoosh.PUSH_RECEIVE_EVENT, message.toJson().toString());
context.startActivity(launchIntent); }}পুশ নোটিফিকেশন কাস্টমাইজ করা
Anchor link toপুশ নোটিফিকেশনের ভিউ কাস্টমাইজ করতে, আপনাকে একটি কাস্টম ফ্যাক্টরি তৈরি করতে হবে, আপনি একটি কাস্টম NotificationFactory তৈরি করতে পারেন এবং আপনার NotificationFactory-এর সম্পূর্ণ কোয়ালিফাইড ক্লাস নামটি com.pushwoosh.notification_factory ভ্যালুর অধীনে মেটাডেটাতে অন্তর্ভুক্ত করতে পারেন।
<meta-data android:name="com.pushwoosh.notification_factory" android:value="com.your.package.YourNotificationFactory" />public class YourNotificationFactory extends PushwooshNotificationFactory { @Override public Notification onGenerateNotification(@NonNull PushMessage pushMessage) { if (customNotification) { // TODO: generate and return custom notification }
// return default Pushwoosh notification return super.onGenerateNotification(pushMessage); }}গ্রুপ সারাংশ কাস্টমাইজ করা
Anchor link toএকটি গ্রুপ সারাংশের চেহারা কাস্টমাইজ করতে, একটি কাস্টম ফ্যাক্টরি তৈরি করুন। আপনি কাস্টম SummaryNotificationFactory তৈরি করতে পারেন এবং আপনার SummaryNotificationFactory-এর সম্পূর্ণ কোয়ালিফাইড ক্লাস নামটি com.pushwoosh.summary_notification_factory ভ্যালুর অধীনে মেটাডেটাতে অন্তর্ভুক্ত করতে পারেন।
<meta-data android:name="com.pushwoosh.summary_notification_factory" android:value="com.your.package.YourSummaryNotificationFactory" />public class YourSummaryNotificationFactory extends PushwooshSummaryNotificationFactory { @Override public String summaryNotificationMessage(int notificationsAmount) { // return the message you want return super.summaryNotificationMessage(notificationsAmount); } @Override public int summaryNotificationIconResId() { // return the icon resource id you want return super.summaryNotificationIconResId(); }}ব্যক্তিগত এন্ডপয়েন্ট URL
Anchor link toPushwoosh কাস্টম প্ল্যান সাবস্ক্রিপশন সহ গ্রাহকদের জন্য ব্যক্তিগত এন্ডপয়েন্ট সরবরাহ করে। Android SDK-এর জন্য ব্যক্তিগত এন্ডপয়েন্ট সেট আপ করতে, আপনাকে আপনার AndroidManifest.xml ফাইলে নিম্নলিখিতটি যোগ করতে হবে:
<meta-data android:name="com.pushwoosh.base_url" android:value="PUSHWOOSH_PRIVATE_ENDPOINT_URL_PROVIDED" />একটি রিচ মিডিয়া কিউ তৈরি করা
Anchor link toযদি একই সাথে একাধিক রিচ মিডিয়া পেজ প্রদর্শনের প্রয়োজন হয় (উদাহরণস্বরূপ, দুই বা ততোধিক ইন-অ্যাপের জন্য ট্রিগার ইভেন্ট একই সময়ে ঘটে, অথবা একটি রিচ মিডিয়া পেজ প্রদর্শিত হওয়ার সময় অন্য একটি ট্রিগার ইভেন্ট ঘটে), আপনি রিচ মিডিয়া পেজ প্রদর্শনের জন্য একটি কিউ সেট আপ করতে পারেন। একটি কিউ তৈরি করতে, আপনার প্রজেক্টে নিম্নলিখিত কোডটি যোগ করুন:
package com.pushwoosh.testingapp;
import com.pushwoosh.RichMediaManager;import com.pushwoosh.exception.PushwooshException;import com.pushwoosh.richmedia.RichMediaPresentingDelegate;import com.pushwoosh.richmedia.RichMedia;import com.pushwoosh.internal.utils.PWLog;
import java.util.ArrayDeque;import java.util.concurrent.locks.ReentrantLock;
public class DefaultRichMediaPresentingDelegate implements RichMediaPresentingDelegate { private final String TAG = DefaultRichMediaPresentingDelegate.class.getSimpleName(); private ArrayDeque<RichMedia> richMediaQueue = new ArrayDeque<>(); private RichMedia currentRichMedia = null; private ReentrantLock reentrantLock;
public DefaultRichMediaPresentingDelegate() { PWLog.noise(TAG, "new DefaultRichMediaPresentingDelegate:" + this); reentrantLock = new ReentrantLock(); }
@Override public boolean shouldPresent(RichMedia richMedia) { PWLog.noise(TAG, "shouldPresent:" + richMedia); if (currentRichMedia == null) { PWLog.noise(TAG, "currentRichMedia is null"); } if (richMedia.isLockScreen()) { PWLog.noise(TAG, "isLockScreen is true"); return true; } try { reentrantLock.lock(); if (currentRichMedia == null) { PWLog.noise(TAG, "show:" + richMedia); currentRichMedia = richMedia; return true; } else { PWLog.noise(TAG, "add to queue:" + richMedia); richMediaQueue.add(richMedia); return false; } } finally { reentrantLock.unlock(); } }
@Override public void onPresent(RichMedia richMedia) { PWLog.noise(TAG, "onPresent" + richMedia); }
@Override public void onError(RichMedia richMedia, PushwooshException pushwooshException) { PWLog.error(TAG, pushwooshException + " richMedia:"+richMedia.toString()); tryShowNextRichMediaThreadSafety(); }
@Override public void onClose(RichMedia richMedia) { PWLog.noise(TAG, "onClose:" + richMedia); tryShowNextRichMediaThreadSafety(); }
private void tryShowNextRichMediaThreadSafety() { try { reentrantLock.lock(); tryShowNextRichMedia(); } finally { reentrantLock.unlock(); } }
private void tryShowNextRichMedia() { if (!richMediaQueue.isEmpty()) { currentRichMedia = richMediaQueue.poll(); PWLog.noise(TAG, "try manual show:" + currentRichMedia); RichMediaManager.present(currentRichMedia); } else { PWLog.noise(TAG, "richMediaQueue is empty"); currentRichMedia = null; } }}কাস্টম সাউন্ড পুশ
Anchor link to- আপনার অডিও ফাইলটি সঠিক ফোল্ডারে রাখুন। নেটিভ Android ফ্রেমওয়ার্কের জন্য, আপনার ফাইলগুলি
/app/src/main/res/rawফোল্ডারে রাখা উচিত।
2. একটি নোটিফিকেশন চ্যানেল তৈরি করুন।
3. একটি পুশ বার্তা কনফিগার করার সময় একটি সাউন্ড নির্বাচন করুন।

4. বার্তাটি কোন নোটিফিকেশন চ্যানেলের অন্তর্গত হবে তা সেট করুন। এটি করতে, “Android root params” ফিল্ডে নিম্নলিখিতটি নির্দিষ্ট করুন: {"pw_channel": "PUSH NOTIFICATION CHANNEL NAME"} // _এখানে আপনার কাস্টম সাউন্ড সহ চ্যানেলের নাম নির্দিষ্ট করতে হবে_
রিমোট API ব্যবহার করার ক্ষেত্রে, আপনার /createMessage API অনুরোধের মধ্যে প্যারামিটারগুলি নিম্নরূপ সেট করুন:
"android_root_params": {"pw_channel": "push"} // এখানে আপনার কাস্টম সাউন্ড সহ চ্যানেলের নাম নির্দিষ্ট করতে হবে, উদাহরণস্বরূপ, push.wav সাউন্ড সহ নোটিফিকেশনের জন্য "push"।"android_sound": "push" // এখানে আপনার এক্সটেনশন ছাড়া ফাইলের নাম নির্দিষ্ট করা উচিতএকবার আপনি এই প্যারামিটারগুলি নির্দিষ্ট করে পুশ পাঠালে, Android 8+ সহ সমস্ত ডিভাইসের জন্য নির্বাচিত সাউন্ড সহ নোটিফিকেশন চ্যানেল তৈরি হয়ে যাবে।
এখন, একটি কাস্টম সাউন্ড সহ পুশ পাঠাতে, আপনাকে শুধুমাত্র সেই সাউন্ডের সাথে যুক্ত চ্যানেলটি নির্দিষ্ট করতে হবে।
কাস্টম নোটিফিকেশন সাউন্ডের জন্য Proguard নিয়ম
Anchor link toযদি আপনার অ্যাপ কোড এবং রিসোর্স সঙ্কুচিত করার জন্য proguard ব্যবহার করে, তবে আপনার সাউন্ড ফাইলগুলি অক্ষত এবং বাহ্যিক লাইব্রেরির জন্য উপলব্ধ রাখা গুরুত্বপূর্ণ। যদি আপনি আপনার build.gradle-এ minifyEnabled = true প্রপার্টি ব্যবহার করেন, তাহলে আপনার proguard-rules.pro-তে নিম্নলিখিত নিয়মগুলি যোগ করুন:
-keep public class your.package.name.R$raw { *;}যদি আপনি shrinkResources=true প্রপার্টি ব্যবহার করে কোড সঙ্কুচিত করার উপরে আপনার অ্যাপের রিসোর্সগুলি সঙ্কুচিত করেন, তাহলে আপনাকে অতিরিক্তভাবে নির্দিষ্ট করতে হবে যে আপনি কোন রিসোর্সগুলি রাখতে চান। এটি করতে, যেকোনো নামে একটি নতুন XML ফাইল তৈরি করুন, এটি আপনার প্রজেক্টের কোথাও সংরক্ষণ করুন (উদাহরণস্বরূপ, res/xml-এ), এবং resources ট্যাগের tools:keep প্যারামিটারের অধীনে রিসোর্সের নামগুলি নির্দিষ্ট করুন:
<?xml version="1.0" encoding="utf-8"?><resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@raw/*"/>Android SDK মেটা-ডেটা ফ্ল্যাগের সম্পূর্ণ তালিকা
Anchor link toএকটি ফ্ল্যাগ সেট আপ করতে, আপনাকে আপনার AndroidManifest.xml ফাইলের application ট্যাগের ভিতরে মেটা-ডেটা ব্লক যোগ করতে হবে। উদাহরণস্বরূপ, আপনি যদি Pushwoosh অ্যাপ্লিকেশন আইডি সেট করতে চান, তাহলে আপনার AndroidManifest.xml ফাইলে নিম্নলিখিত কোডটি যোগ করুন:
<meta-data android:name="com.pushwoosh.appid" android:value="XXXXX-XXXXX" />| ফ্ল্যাগ | বিবরণ | সম্ভাব্য মান |
|---|---|---|
| com.pushwoosh.appid | Pushwoosh অ্যাপ্লিকেশন আইডি সেট করে। | XXXXX-XXXXX |
| com.pushwoosh.senderid | Firebase প্রজেক্টের সেন্ডার আইডি সেট করে। | 123456789000 |
| com.pushwoosh.log_level | লগিং লেভেল সেট করে। বিস্তারিত জানতে, লগ লেভেল নিয়ন্ত্রণ দেখুন। | NONE / ERROR / WARN / INFO / DEBUG (ডিফল্ট) / NOISE |
| com.pushwoosh.base_url | Pushwoosh সার্ভারের বেস ইউআরএল ওভাররাইড করে। | https://cp.pushwoosh.com/json/1.3/ (ডিফল্ট) |
| com.pushwoosh.notification_service_extension | কাস্টম NotificationServiceExtension। বিস্তারিত জানতে, নোটিফিকেশন খোলার আচরণ কাস্টমাইজ করা দেখুন। | com.myapp.MyNotificationServiceExtension |
| com.pushwoosh.notification_factory | কাস্টম NotificationFactory। বিস্তারিত জানতে, পুশ নোটিফিকেশন কাস্টমাইজ করা দেখুন। | com.myapp.MyNotificationFactory |
| com.pushwoosh.summary_notification_factory | কাস্টম SummaryNotificationFactory। | com.myapp.MySummaryNotificationFactory |
| com.pushwoosh.multi_notification_mode | যদি true হয়, নোটিফিকেশন গ্রুপ করা হবে। যদি false হয়, শুধুমাত্র শেষ প্রাপ্ত নোটিফিকেশন প্রদর্শিত হবে। | true / false (ডিফল্ট) |
| com.pushwoosh.allow_server_communication | যদি true হয়, SDK Pushwoosh সার্ভারে নেটওয়ার্ক অনুরোধ পাঠানোর অনুমতি পাবে। | true (ডিফল্ট) / false |
| com.pushwoosh.handle_notifications_using_workmanager | যদি true হয়, WorkManager নোটিফিকেশন হ্যান্ডেল করার জন্য সেট করা হবে। | true / false (ডিফল্ট) |
| com.pushwoosh.notification_icon | কাস্টম নোটিফিকেশন (ছোট) আইকন রিসোর্সের নাম। যদি null হয়, ডিফল্ট অ্যাপ্লিকেশন আইকন ব্যবহার করা হবে। | res/drawable-xxhdpi-v11/notification_small_icon.png / null |
| com.pushwoosh.notification_icon_color | নোটিফিকেশন (ছোট) আইকনের পটভূমির রঙ। | #FFFFFF |
| com.pushwoosh.allow_collecting_device_data | যদি true হয়, SDK ডিভাইস ডেটা সংগ্রহ এবং Pushwoosh-এ পাঠানোর অনুমতি পাবে। | true (ডিফল্ট) / false |
| com.pushwoosh.allow_collecting_device_os_version | যদি true হয়, SDK ডিভাইস OS সংস্করণ সংগ্রহ এবং Pushwoosh-এ পাঠানোর অনুমতি পাবে। | true (ডিফল্ট) / false |
| com.pushwoosh.allow_collecting_device_locale | যদি true হয়, SDK ডিভাইস লোকেল সংগ্রহ এবং Pushwoosh-এ পাঠানোর অনুমতি পাবে। | true (ডিফল্ট) / false |
| com.pushwoosh.allow_collecting_device_model | যদি true হয়, SDK ডিভাইস মডেল সংগ্রহ এবং Pushwoosh-এ পাঠানোর অনুমতি পাবে। | true (ডিফল্ট) / false |
| com.pushwoosh.in_app_business_solutions_capping | push-unregister ইন-অ্যাপ দিনে কতবার দেখানো যাবে তা সীমাবদ্ধ করে। | 1 (ডিফল্ট), 2, …, n |
| com.pushwoosh.start_foreground_service | যদি true হয়, PushwooshLocation.startLocationTracking() কলের সাথে ফোরগ্রাউন্ড সার্ভিস চালু হবে। | true / false (ডিফল্ট) |
| com.pushwoosh.foreground_service_notification_text | ”com.pushwoosh.start_foreground_service” কী-এর জন্য ফোরগ্রাউন্ড সার্ভিস চালু হলে তৈরি হওয়া নোটিফিকেশনের টেক্সট সেট করে। | Work in progress (ডিফল্ট) |
| com.pushwoosh.foreground_service_notification_channel_name | ”com.pushwoosh.start_foreground_service” কী-এর জন্য ফোরগ্রাউন্ড সার্ভিস চালু হলে তৈরি হওয়া নোটিফিকেশনের চ্যানেল নাম সেট করে। | Foreground service (ডিফল্ট) |
| com.pushwoosh.trusted_package_names | নির্দিষ্ট প্যাকেজের সাথে Pushwoosh HWID শেয়ার করার অনুমতি দেয়। | “com.mycompany.myapp1, com.mycompany.myapp2” |
TTL (Time-To-Live) এর মাধ্যমে পুশ নোটিফিকেশন মুছে ফেলা
Anchor link toTTL (Time-to-Live) ব্যবহার করে একটি নির্দিষ্ট সময় পরে পুশ নোটিফিকেশন স্বয়ংক্রিয়ভাবে মুছে ফেলার জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:
-
একটি কাস্টম NotificationFactory তৈরি করুন। আরও জানুন
-
onGenerateNotification()পদ্ধতিতে,Notification.BuilderবাNotificationCompat.Builderক্লাস ব্যবহার করে একটি নোটিফিকেশন তৈরি করুন এবংsetTimeoutAfterপদ্ধতিটি কল করুন:
public class YourNotificationFactory extends PushwooshNotificationFactory {
@Override public Notification onGenerateNotification(@NonNull PushMessage pushMessage) { Notification.Builder builder = new Notification.Builder(getApplicationContext(), addChannel(pushData));
Notification notification = builder.setContentText(pushData.getMessage()) .setContentTitle(title) .setContentText(text) // rest of your notification creation code .setTimeoutAfter(timeout) // time in milliseconds before the notification is canceled .build(); }}আপনার মতামত আমাদের সাথে শেয়ার করুন
Anchor link toআপনার মতামত আমাদের একটি উন্নত অভিজ্ঞতা তৈরি করতে সাহায্য করে, তাই SDK ইন্টিগ্রেশন প্রক্রিয়ার সময় আপনার কোনো সমস্যা হলে আমরা আপনার কাছ থেকে শুনতে চাই। যদি আপনি কোনো অসুবিধার সম্মুখীন হন, অনুগ্রহ করে এই ফর্মের মাধ্যমে আমাদের সাথে আপনার মতামত শেয়ার করতে দ্বিধা করবেন না।