چرا نرخ دلیوری پوش نوتیفیکیشن در چشمک و پوشه متفاوت است؟

چرا نرخ دلیوری پوش نوتیفیکیشن در چشمک و پوشه متفاوت است؟

عمومی - نویسنده : رضا - ‏ ۰۶ شهریور ۱۳۹۸

در زیر اول یک توضیح کوتاه ارائه می کنیم و سپس یک توضیح مفصل تر ارائه می کنیم.

کوتاه و خودمانی:

در سرویس پوشه همینکه گوگل به سرورهای پوشه اعلان کند که پوش به گوشی رسیده سایت پوشه اون رو به عنوان یک «ویو» یا «بازدید» لحاظ می کنه. اما در چشمک ما تنها وقتی که پوش نوتیفیکیشن توسط گوشی دریافت شود «و» از سیستم عامل به اپ شما تحویل داده بشه «و» اپ شما آن را نمایش دهد یک «ویو» یا «بازدید» ثبت می کنیم. از نظر ما، شیوه ی محاسبه ی چشمک در این خصوص دقیق تره. چرا که به دلایل مختلف ممکنه پوشی که توسط گوگل به گوشی ارسال شده توسط اپ شما دریافت نشده باشد و به کاربر نمایش داده نشده باشد. برای مثال:
1. اگه سرویس مورد استفاده در نرم افزار بسته شده باشه و دیگر در بکگراند وجود نداشته باشه (مثلا بخاطر کرش کردن برنامه و یا بسته شدن توسط کاربر از طریق تنظیمات ) دیگر سرویس google play services سرویس دریافت پوش (چه چشمک باشه و چه پوشه) رو درون اپلیکیشن شما فراخوانی نمی کنه! در این حالت برخی سرویسهای ارائه دهنده ی پوش نظیر پوشه یک بازدید ثبت می کند و برخی دیگر نظیر سرویس چشمک صفر بازدید ثبت می کنند چون واقعا پوشی به دست اپ شما نرسیده پس بازدیدی اتفاق نیفتاده!
2. در نسخه های 8 و 9 اندروید ممکنه خود سیستم عامل بسته به اولویت پوش ارسالی، سرویس چشمک یا پوشه رو فراخوانی نکنه و پوش نمایش داده نشه.

توضیح دقیقتر:

در زیر نمای کلی نحوه کار پوش نوتیفیکیشن در سرویس های ارسال پوش نوتیفیکیشن را معرفی کنیم. منظور از «خدمتگزار» در نوشته ی زیر، سرویس های ارسال نوتیفیکیشن نظیر چشمک و پوشه می باشد. به شکل زیر توجه کنید:

مراحل ارسال پوش نوتیفیکیشن از سرورهای چشمک به صورت زیر می‌باشد:
1. پوش نوتیفیکیشن از سرورهای چشمک به سرویس FCM گوگل ارسال می‌شود.
2. سرویس Firebase Cloud Messaging پوش نوتیفیکیشن را به دستگاه هدف ارسال می‌کند.
3. سرویس google play services پوش نوتیفیکیشن مربوطه را دریافت می‌کند.
4. سرویس google play services سرویس چشمک را درون اپلیکیشن شما قراخوانی کرده و پوش نوتیفیکیشن نمایش داده می‌شود.
دو شیوه ی رایج در محاسبه آمار دلیوری پوش نوتیفیکیشن در اپلیکیشن‌های اندروید وجود دارد:
1. Delivery Type A: این نوع دلیوری از google play services در دستگاه اندروید به سرورهای گوگل و از طریق گوگل به سرورهای خدمتگزار ارسال می‌شود. به این نوع دلیوری اصطلاحا Delivery Receipt می‌گویند. این نوع دلیوری زمانی به سرورهای خدمتگزار ارسال می‌گردد که پوش نوتیفیکیشن توسط دستگاه دریافت گردد. پوشه در حال حاضر ازین شیوه استفاده می کند.
2. Delivery Type B: این نوع دلیوری توسط SDK چشمک به سرورهای چشمک ارسال می‌گردد. این نوع دلیوری زمانی ارسال می‌شود که پوش نوتیفیکیشن توسط اپلیکیشن شما دریافت شده و آماده نمایش می‌باشد و در نمایش یا پردازش آن هیچ گونه خطایی رخ نداده باشد. چشمک ازین شیوه استفاده می کند.

آیا ممکن است مرحله ۴ در ارسال پوش نوتیفیکیشن با موفقیت انجام نشود؟
پاسخ: بله. در صورتی که سرویس دریافت کننده ی پوش در اپلیکیشن شما بسته شده باشد و دیگر در بکگراند وجود نداشته باشد دیگر سرویس google play services سرویس خدمتگزار را درون اپلیکیشن شما فراخوانی نمی کند. در حالت دیگر در نسخه های 8 و 9 اندروید ممکن است خود سیستم عامل بسته به اولویت پوش ارسالی سرویس خدمتگزار را فراخوانی نکند و پوش نمایش داده نشود.

چرا نرخ دلیوری چشمک کمتر از برخی دیگر از ارائه دهندگان پوش نوتیفیکیشن است؟
تفاوت در نوع پیاده سازی Delivery می‌باشد. چشمک از نوع B برای ارسال دلیوری به سرورهای خود استفاده می‌کند. از این رو این آمار بسیار دقیق بوده و تنها زمانی که پوش توسط اپلیکیشن شما دریافت شده باشد یک دلیوری و به تعبیر عامیانه (و البته غیر دقیق) یک «بازدید» محاسبه می‌شود.
در بسیاری موارد نرخ دلیوری نوع B از نوع A کمتر می‌باشد چرا که ممکن است پوش توسط دستگاه دریافت شود اما گوگل پلی سرویس در صدا زدن سرویس برنامه شما با مشکل مواجه شود (دلایل آن در بالا توضیح داده شد).
برخی از سرویس های ارائه دهنده پوش از Delivery نوع A استفاده می‌کنند و از این رو در ظاهر نرخ دلیوری بالاتری را نمایش می‌دهند. این در حالی است که در نوع A در بسیاری از حالت‌ها پوش نوتیفیکیشن در نهایت به کاربر نمایش داده نخواهد شد و آمار صحیحی برای محاسبه نمی‌باشد.

رضا

عضوی از تیم چشمک 

درباره این مطلب دیدگاهی بنویسید...

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز با * علامت‌گذاری شده‌اند.