বৃদ্ধি
ডিপ লিংক
একটি ডিপ লিংক আপনার ইনস্টল করা অ্যাপের ভেতরে একটি নির্দিষ্ট স্ক্রিন খোলে, যেমন একটি চ্যালেঞ্জ, একটি রেফারেল আমন্ত্রণ বা একটি প্রোডাক্ট পেজ। অ্যাপটি ইনস্টল করা না থাকলে ভিজিটর আপনার স্মার্ট লিংকের মতোই স্টোরে চলে যান। ডিপ লিংক Pro, Studio এবং আজীবন প্ল্যানে পাওয়া যায়। Universal Links এবং Android App Links-এর জন্য একটি কাস্টম ডোমেইনও প্রয়োজন, যা Studio-র অংশ।
ডিপ লিংক কীভাবে কাজ করে
আপনার স্মার্ট লিংকে /open/ এবং অ্যাপের ভেতরের পাথ যোগ করুন। কোয়েরি স্ট্রিংও সাথে পাঠানো হয়:
https://mapps.one/habitly/open/challenges/30-days?ref=newsletter
| ভিজিটর | কী ঘটে |
|---|---|
| iPhone বা iPad, iOS URL scheme সেট করা থাকলে | একটি ছোট পেজ habitly://challenges/30-days?ref=newsletter খোলার চেষ্টা করে। অ্যাপটি ইনস্টল করা না থাকলে ভিজিটর App Store-এ চলে যান। |
| Android বা Huawei, package name সেট করা থাকলে | একটি ছোট পেজ একই পাথের জন্য একটি Android intent খোলে, যা শুধু আপনার package-এর মধ্যে সীমাবদ্ধ। অ্যাপটি ইনস্টল করা থাকলে Chrome সেটি খোলে, না থাকলে Google Play-এর ফলব্যাক অনুসরণ করে। |
| ফোন বা ট্যাবলেট, যার প্ল্যাটফর্মের জন্য কোনো ডিপ লিংক সেটিংস নেই | সরাসরি ফলব্যাকে রিডাইরেক্ট করা হয়। |
| ডেস্কটপ কম্পিউটার এবং বট | কোয়েরি স্ট্রিং বজায় রেখে স্মার্ট লিংকে রিডাইরেক্ট করা হয়। |
ফলব্যাক হলো সেই জায়গা, যেখানে আপনার স্মার্ট লিংক আপনার রিডাইরেক্ট নিয়ম অনুসরণ করে ওই ডিভাইসটিকে পাঠাত, UTM ট্যাগ ফরওয়ার্ড করে। ওই প্ল্যাটফর্মের কোনো স্টোর লিংক না থাকলে ফলব্যাক হলো ল্যান্ডিং পেজ। ডিপ লিংক একেবারেই সেট আপ করা না থাকলে, অথবা প্ল্যানে এটি অন্তর্ভুক্ত না থাকলে, প্রত্যেক ভিজিটরকে স্মার্ট লিংকে রিডাইরেক্ট করা হয়।
পাথে অক্ষর, সংখ্যা এবং / _ - . ~ % চিহ্নগুলো থাকতে পারে। অন্য অক্ষর সরিয়ে ফেলা হয়, তাই বাকি সবকিছু পার্সেন্ট-এনকোড করুন, যেমন স্পেস (%20)।
সেট আপ
অ্যাপের ডিপ লিংক ট্যাব খুলুন এবং আপনি যেসব প্ল্যাটফর্ম সাপোর্ট করেন সেগুলোর ফিল্ড পূরণ করুন:
| ফিল্ড | উদাহরণ | যে কাজে ব্যবহৃত হয় |
|---|---|---|
| iOS URL scheme | habitly:// | iPhone ও iPad-এ রিডাইরেক্ট পেজ থেকে অ্যাপ খোলা |
| Apple Team ID | A1B2C3D4E5 | Universal Links। আপনার Apple Developer অ্যাকাউন্টের Membership details থেকে পাওয়া 10-অক্ষরের ID। |
| iOS bundle ID | com.habitly.app | Universal Links |
| Android package name | com.habitly.app | Android ও Huawei ডিভাইসে অ্যাপ খোলা |
| Android scheme | habitly | আপনার intent filter যে scheme পরিচালনা করে |
| SHA-256 সার্টিফিকেট ফিঙ্গারপ্রিন্ট | 14:6D:E9:83:...:44:E5 | Android App Links। কমা, স্পেস বা নতুন লাইন দিয়ে আলাদা করে এক বা একাধিক যোগ করুন। |
habitly। খালি রাখলে https ব্যবহার করা হয় এবং পাথের প্রথম অংশটি হোস্ট হয়ে যায় (https://challenges/30-days)। এটি কেবল তখনই কাজ করে, যখন আপনার intent filter এমনটাই আশা করে।আপনার অ্যাপে scheme রেজিস্টার করুন
iOS-এ, Info.plist ফাইলে:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>habitly</string>
</array>
</dict>
</array>
Android-এ, AndroidManifest.xml ফাইলে:
<activity android:name=".MainActivity" android:exported="true">
<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="habitly" />
</intent-filter>
</activity>
আপনার অ্যাপে আসা URL-টি পড়ুন, মিলে যাওয়া স্ক্রিনে রাউট করুন এবং প্রয়োজনীয় কোয়েরি প্যারামিটারগুলো পড়ুন। অজানা পাথগুলো হোম স্ক্রিনে পাঠান, কারণ মানুষ URL এডিট করে।
Universal Links এবং Android App Links
Scheme লিংক প্রথমে একটি ছোট রিডাইরেক্ট পেজ দেখায়, এবং iOS ভিজিটরকে নিশ্চিত করতে বলতে পারে। ভেরিফায়েড লিংক এই ধাপটি এড়িয়ে যায়: অ্যাপটি ইনস্টল করা থাকলে সিস্টেম সরাসরি সেটি খোলে। ভেরিফিকেশনের জন্য এমন একটি ডোমেইন প্রয়োজন যা শুধু আপনার অ্যাপের, তাই এটি আপনার কাস্টম ডোমেইনে কাজ করে। get.habitly.app সংযুক্ত হয়ে গেলে mapps.one আপনার হয়ে association ফাইলগুলো পরিবেশন করে:
| ফাইল | যা থেকে তৈরি |
|---|---|
https://get.habitly.app/.well-known/apple-app-site-association( /apple-app-site-association-এও পাওয়া যায়) | Apple Team ID এবং bundle ID |
https://get.habitly.app/.well-known/assetlinks.json | Android package name এবং SHA-256 ফিঙ্গারপ্রিন্ট |
Apple ফাইলটি /open/-এর অধীনে প্রতিটি পাথ কভার করে:
{
"applinks": {
"details": [
{
"appIDs": ["A1B2C3D4E5.com.habitly.app"],
"components": [
{ "/": "/open/*", "comment": "Deep links created with mapps.one" }
]
}
]
},
"webcredentials": { "apps": ["A1B2C3D4E5.com.habitly.app"] }
}
Android ফাইল:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.habitly.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
প্রতিটি ফাইল "404 Not Found" রিটার্ন করে, যতক্ষণ না এর ফিল্ডগুলো বৈধ হয়: Apple-এর জন্য একটি 10-অক্ষরের Team ID ও একটি bundle ID, এবং Android-এর জন্য একটি package name ও AA:BB:... ফরম্যাটে (32 জোড়া) কমপক্ষে একটি ফিঙ্গারপ্রিন্ট। Play Console → App integrity থেকে Play App Signing কী-এর ফিঙ্গারপ্রিন্ট ব্যবহার করুন, এবং লোকালি সাইন করা বিল্ড টেস্ট করলে আপনার আপলোড কী-ও যোগ করুন। ফাইলগুলো এক ঘণ্টার জন্য ক্যাশ করা হয়। Apple-ও নিজের সার্ভারে এগুলো ক্যাশ করে, তাই পরিবর্তন টেস্ট করতে অ্যাপটি আবার ইনস্টল করুন।
আপনার অ্যাপ কনফিগার করুন
iOS: applinks:get.habitly.app দিয়ে Associated Domains capability যোগ করুন।
Android: আপনার ডোমেইনের জন্য একটি ভেরিফায়েড intent filter যোগ করুন:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="get.habitly.app" android:pathPrefix="/open/" />
</intent-filter>
তারপর আপনার ক্যাম্পেইনে https://get.habitly.app/open/challenges/30-days-এর মতো লিংক ব্যবহার করুন। অ্যাপটি ইনস্টল করা না থাকলে ব্রাউজার পেজটি লোড করে এবং একই ফলব্যাক প্রক্রিয়া চলে।
mapps.one অনেক অ্যাপ মিলে ব্যবহার করে। mapps.one/habitly/open/-এর লিংকগুলো রিডাইরেক্ট পেজের মাধ্যমে কাজ করতে থাকে। ড্যাশবোর্ড ও API-তে দেখানো ডিপ লিংক URL-গুলো mapps.one ব্যবহার করে, তাই ভেরিফায়েড লিংক চাইলে হোস্টটি আপনার ডোমেইন দিয়ে বদলে দিন।অ্যানালিটিক্স
কোনো ফোন বা ট্যাবলেট একটি /open/ URL লোড করলে এবং mapps.one অ্যাপটি খোলার চেষ্টা করলে ডিপ লিংক ওপেন-এ একটি ওপেন গণনা করা হয়। স্টোরে ফলব্যাক দ্বিতীয়বার গণনা করা হয় না। যেসব ভেরিফায়েড লিংক সরাসরি অ্যাপ খোলে সেগুলো কখনো mapps.one-এ পৌঁছায় না, তাই সেগুলো গণনা করা হয় না। সেগুলোর জন্য আপনার অ্যাপের নিজস্ব অ্যানালিটিক্স ব্যবহার করুন।