تحلیل سفر مینیاپ
راهنمای تحلیل سفر کاربران در مینیاپهای بومی و وب، شامل حالت خودکار، ثبت دستی رویدادها و مشاهده نتایج در پنل اپسان.
- معرفی تحلیل سفر مینیاپ
- مینیاپ بومی: حالت خودکار و تنظیم سفر در پنل
- مینیاپ بومی: ثبت دستی مراحل و نتیجه سفر
- مینیاپ وب: تحلیل خودکار و ثبت دستی سفر
معرفی تحلیل سفر مینیاپ
تحلیل سفر مسیر واقعی کاربر را از زمان باز شدن مینیاپ تا رسیدن به نتیجه نهایی ثبت میکند. هر سفر مجموعهای مرتب از رویدادها است؛ برای نمونه ورود به صفحه اصلی، نمایش یک گفتوگو، رفتن به صفحه پرداخت و در نهایت تکمیل یا خطای سفر.
با این قابلیت میتوان مشخص کرد کاربران از کدام مسیر عبور میکنند، در کدام مرحله متوقف میشوند و نرخ تکمیل هر فرایند چقدر است. نتیجه در پنل اپسان، هم بهصورت تجمیعی و هم در جزئیات هر سفر نمایش داده میشود.
چه اطلاعاتی ثبت میشود؟
- زمان شروع و پایان سفر و زمان وقوع هر رویداد
- مراحل مشاهدهشده با نوع
page،dialogیاcustom - نتیجه نهایی: تکمیلشده، خطا، لغوشده، اتمام زمان یا ناتمام
- نوع اجرا: مینیاپ بومی اندروید یا Web
- دادههای فنی و غیرحساس که توسعهدهنده به سفر اضافه میکند
- لاگهای مجاز، فقط وقتی قانون جمعآوری لاگ در تعریف سفر فعال باشد
نکته امنیتی: در رابط تحلیل سفر پنل، شناسه کاربر و شناسه نشست نمایش داده نمیشود. در دادههای سفر نیز اطلاعات شخصی، توکن، شماره تماس و ورودی آزاد کاربر را ثبت نکنید.
نسخههای موردنیاز
| بخش | حداقل نسخه | کاربرد |
|---|---|---|
Appsan Core |
0.1.78 |
چرخه اجرای مینیاپ و ارتباط با میزبان |
Appsan Analytics |
0.1.0 |
ساخت، مرتبسازی و ارسال رویدادهای سفر |
Appsan Web Extension |
0.0.8 |
پل امن میان WebView و SDK بومی |
Appsan Mini Web SDK |
0.1.0 |
تشخیص مسیر و API عمومی مینیاپ وب |
برای مینیاپ کاملاً بومی، دو مورد اول لازم است. برای مینیاپ وب داخل Android WebView، هر چهار مورد باید با نسخههای بالا یا نسخه سازگار جدیدتر استفاده شوند.
روشهای ثبت سفر
حالت خودکار
شروع سفر، نمایش صفحات بومی و تغییر مسیرهای معمول وب بدون ثبت دستی توسعهدهنده شناسایی میشود. این حالت، انتخاب پیشفرض است.
حالت دستی
برای مراحل معنایی که از چرخه صفحه یا URL قابل تشخیص نیست، توسعهدهنده رویداد را صریحاً ثبت میکند؛ مانند نمایش پنجره تأیید، انتخاب روش پرداخت یا پایان موفق یک فرایند چندمرحلهای.
صفحات بعدی، نحوه استفاده از هر دو حالت در مینیاپ بومی و وب و همچنین تنظیم و مشاهده نتیجه در پنل را توضیح میدهند.
مینیاپ بومی: حالت خودکار و تنظیم سفر در پنل
در مینیاپ بومی، افزونه Analytics چرخه اجرای مینیاپ و نمایش عناصر page و dialog را بهصورت خودکار به رویدادهای سفر تبدیل میکند.
چه چیزهایی خودکار ثبت میشوند؟
- با رندر شدن مینیاپ، رویداد شروع سفر ساخته میشود.
- هر عنصر
pageیاdialogهنگام نمایش، با شناسه فنی خود بهعنوان مرحله ثبت میشود. - ترتیب رخدادها داخل هر سفر بهصورت افزایشی نگهداری میشود.
- اگر مینیاپ بدون نتیجه صریح بسته شود، سفر با نتیجه لغوشده و دلیل
app_closedپایان مییابد.
نکته: شناسه عناصر باید پایدار، کوتاه و غیرحساس باشد؛ مانند checkout، payment-confirmation یا error-network. متن قابلنمایش، شماره سفارش و اطلاعات کاربر را بهعنوان ID استفاده نکنید.
تنظیم سفر در پنل اپسان
ثبت رویدادها مستقل از تعریف پنل انجام میشود؛ اما برای ساخت قیف، محاسبه نرخ عبور مراحل و تشخیص خطا باید یک تعریف فعال ایجاد شود.
- از منوی مینیاپهای شما، مینیاپ موردنظر را باز کنید.
- به زبانه سفرها بروید و تنظیم سفرها را انتخاب کنید.
- دکمه تعریف جدید را بزنید.
- نوع تعریف را انتخاب کنید: سفر برای مسیر انعطافپذیر یا قیف تبدیل برای ترتیب مشخص مراحل.
- نام و توضیح فارسی وارد کنید و گزینه تعریف فعال باشد را روشن نگه دارید.
- مراحل را بهترتیب اضافه کنید. نوع و شناسه هر مرحله باید دقیقاً با
pageیاdialogدر XML برابر باشد. - در صورت نیاز، قوانین خطا را با تطبیق دقیق یا Regex تعریف کنید و سپس ذخیره تعریف را بزنید.
۱. ورود به زبانه سفرها
۲. باز کردن تنظیمات سفر
۳. ایجاد تعریف جدید و افزودن مراحل
قوانین خطا
مشاهده یک صفحه یا دیالوگ میتواند سفر را خودکار خطادار کند. در حالت تطبیق دقیق، ID باید کاملاً برابر باشد. در حالت Regex، الگو روی کل ID اجرا میشود؛ برای نمونه error-(network|timeout).
Regex فقط روی شناسه فنی اجرا میشود، نه متن دیالوگ یا محتوای لاگ. موتور مشترک سرور و Android از قواعد RE2 استفاده میکند و Lookaround یا Backreference را پشتیبانی نمیکند.
error-networkمشاهده نتیجه
در زبانه سفرها، جدول سفرها شناسه سفر، زمان شروع، نتیجه و تعداد مراحل را نشان میدهد. با انتخاب آیکون مشاهده، جزئیات مرتب مراحل باز میشود. داشبورد نیز تعداد کل سفرها، نرخ تکمیل، مراحل مشاهدهشده و تفکیک نتایج را نمایش میدهد.
مینیاپ بومی: ثبت دستی مراحل و نتیجه سفر
حالت خودکار برای ثبت نمایش صفحات و دیالوگها کافی است. هرجا یک مرحله از روی چرخه رابط قابل تشخیص نیست، یا نتیجه سفر باید صریح باشد، از اکشنهای Analytics استفاده کنید.
چه زمانی ثبت دستی لازم است؟
- رویداد تجاری بدون تغییر صفحه رخ میدهد؛ مانند تأیید پرداخت یا انتخاب روش ارسال.
- یک صفحه چند حالت مهم دارد که باید بهصورت مرحلههای جداگانه دیده شود.
- پایان موفق، لغو، پایان زمان یا خطای سفر باید با دلیل مشخص ثبت شود.
- یک مقدار فنی و غیرحساس باید به جزئیات سفر اضافه شود.
اکشنهای سفر
| اکشن | کاربرد |
|---|---|
analytics/journey/start |
شروع صریح سفر |
analytics/journey/complete |
پایان موفق سفر |
analytics/journey/cancel |
لغو سفر |
analytics/journey/timeout |
پایان سفر بهعلت اتمام زمان |
analytics/journey/fail |
پایان ناموفق بدون کد دلیل |
analytics/journey/fail/{reason} |
پایان ناموفق با کد دلیل؛ مانند payment_declined |
analytics/journey/step/{type}/{id} |
ثبت مرحله دستی با نوع page، dialog یا custom |
analytics/journey/data/{key}/{value} |
افزودن داده فنی و غیرحساس به سفر |
ثبت نتیجه همراه تغییر صفحه
اکشنها مانند سایر اکشنهای Appsan با -> زنجیره میشوند. در مثال زیر ابتدا صفحه موفقیت باز و سپس سفر تکمیل میشود.
ثبت مرحله سفارشی
ثبت خطا با دلیل
افزودن داده به سفر
قواعد شناسه و داده
- طول شناسه مرحله و کد دلیل حداکثر ۱۲۸ کاراکتر است.
- نوع مرحله فقط یکی از
page،dialogیاcustomاست. - در هر سفر حداکثر ۲۰ مقدار داده ثبت میشود.
- کلید داده حداکثر ۶۴ کاراکتر و شامل حروف، عدد، نقطه، زیرخط یا خط تیره است.
- مقدار داده حداکثر ۲۵۶ کاراکتر و مجموع JSON دادهها حداکثر ۲۰۴۸ بایت است.
نکته امنیتی: نام کاربر، شماره تماس، توکن، شماره سفارش و متن آزاد را در شناسه، دلیل خطا یا داده سفر قرار ندهید. برای موارد متغیر از کدهای عمومی و پایدار استفاده کنید.
ارتباط با تعریف پنل
نوع و شناسهای که در اکشن step میفرستید باید با مرحله تعریفشده در پنل یکسان باشد. برای نمونه، اکشن analytics/journey/step/custom/payment-authorized در پنل بهصورت نوع custom و شناسه payment-authorized تعریف میشود.
مینیاپ وب: تحلیل خودکار و ثبت دستی سفر
در مینیاپ وب، SDK مسیرهای داخل صفحه را شناسایی و از طریق سوپراپ به Analytics بومی Appsan ارسال میکند. همین کد در نسخه PWA نیز قابل استفاده خواهد بود.
نصب و فعالسازی
نسخه 0.1.0 یا جدیدتر بسته زیر را به پروژه وب اضافه کنید:
npm install @appsan-web/mini-web-sdk@^0.1.0
در پروژه Android میزبان نیز Appsan Core 0.1.78، Appsan Analytics 0.1.0 و Appsan Web Extension 0.0.8 یا نسخه سازگار جدیدتر لازم است.
import { AppsanWeb } from '@appsan-web/mini-web-sdk';
AppsanWeb.analytics.configure({
autoTrackRoutes: true
});
حالت خودکار
گزینه autoTrackRoutes بهصورت پیشفرض فعال است. SDK مسیر اولیه و تغییرات بعدی را از منابع زیر تشخیص میدهد:
| رویداد یا API مرورگر | نمونه کاربرد |
|---|---|
| بارگذاری مسیر اولیه | اولین صفحهای که کاربر میبیند |
history.pushState |
مسیریابی SPA به صفحه جدید |
history.replaceState |
جایگزینی مسیر فعلی |
popstate |
دکمه برگشت یا جلو مرورگر |
hashchange |
مسیریابی مبتنی بر #/ |
مسیرهای تکراریِ پشتسرهم دوباره ثبت نمیشوند. در حالت پیشفرض Query String و Fragment معمولی از شناسه مرحله حذف میشوند؛ اما مسیر Hash Router مانند #/checkout نگهداری میشود.
مسیرهای پویا و حساس
اگر URL شامل شناسه سفارش، شناسه کاربر یا مقدار متغیر است، همیشه routeIdResolver تعریف کنید تا پیش از ثبت، مسیر عمومی و پایدار شود.
AppsanWeb.analytics.configure({
autoTrackRoutes: true,
routeIdResolver: url =>
url.pathname.replace(//orders/[^/]+/, '/orders/:id')
});
برای نادیده گرفتن یک مسیر، از Resolver مقدار null برگردانید.
چه زمانی حالت دستی لازم است؟
- نمای مهمی باز میشود ولی URL تغییر نمیکند.
- دیالوگ تأیید، پرداخت یا خطا باید در سفر دیده شود.
- یک رویداد تجاری مانند انتخاب روش پرداخت یا تأیید نهایی رخ میدهد.
- نتیجه نهایی سفر باید صریحاً تکمیل، لغو، Timeout یا خطا اعلام شود.
- باید یک مقدار فنی و غیرحساس به سفر اضافه شود.
متدهای دستی
| متد | ورودی | کاربرد |
|---|---|---|
start |
- | شروع صریح سفر |
complete |
- | پایان موفق |
cancel |
- | لغو سفر |
timeout |
- | پایان بهعلت اتمام زمان |
fail |
reasonCode? |
پایان ناموفق با دلیل اختیاری |
step |
type, id |
ثبت مرحله page، dialog یا custom |
setData |
key, value |
افزودن داده فنی به سفر |
log / warn / error |
message |
ثبت پیام تشخیصی در صورت فعال بودن قانون متناظر در پنل |
مثال کامل
import { AppsanWeb } from '@appsan-web/mini-web-sdk';
AppsanWeb.analytics.step('dialog', 'payment.confirmation');
AppsanWeb.analytics.setData('payment.method', 'wallet');
AppsanWeb.analytics.complete().subscribe({
next: () => console.log('Journey completed'),
error: error => console.error(error)
});
تمام متدهای سفر یک Subject از RxJS برمیگردانند و در صورت نیاز میتوان نتیجه ارسال را با subscribe دریافت کرد.
خطا و لاگ
خطاهای Runtime و Promiseهای بدون Handler بهصورت خودکار گزارش میشوند. SDK عمداً console، fetch و XMLHttpRequest را شنود نمیکند. برای ثبت پیام تشخیصی از AppsanWeb.analytics.log، warn یا error استفاده کنید. این پیامها فقط در صورت وجود قانون فعال و منطبق در تعریف سفر پنل جمعآوری میشوند.
مسیر انتقال اطلاعات
- SDK وب مسیر یا رویداد دستی را به پیام Analytics تبدیل میکند.
- Web Extension پیام را از WebView به میزبان Android منتقل میکند.
- Appsan Analytics رویداد را مرتب و به سرویس Analytics ارسال میکند.
- تعریف فعال پنل، مراحل را به سفر یا قیف تبدیل میکند.
نمایش نتیجه در پنل
سفرهای ثبتشده از زبانه «سفرها» در پنل اپسان در دسترس هستند. برای مشاهده جزئیات هر سفر، آیکون مشاهده همان ردیف را انتخاب کنید.
تنظیم مراحل وب در پنل
برای مسیرهای خودکار، نوع مرحله را page و شناسه را دقیقاً برابر خروجی Resolver وارد کنید؛ مانند /checkout یا /orders/:id. برای مراحل دستی نیز نوع و شناسه باید با آرگومانهای متد step یکسان باشد؛ برای نمونه dialog / payment.confirmation.
/home و /checkout و مرحله دستی payment.confirmationپیشنهاد: ابتدا خروجی Resolver و نام مرحلههای دستی را بهصورت یک قرارداد ثابت در پروژه تعریف کنید، سپس همان مقادیر را در پنل وارد کنید. این کار از شکسته شدن گزارشها پس از تغییر مسیرهای رابط جلوگیری میکند.