PDA

View Full Version : عملکرد پوش نوتیفیکیشنها چگونه است؟



pbm_soy
شنبه 23 آبان 1394, 20:16 عصر
همانطوری که از عنوان تاپیک پیداست گوگل و یا پارس چگونه پیامها را تحویل کلاینتها میدهند؟
با توجه به اینکه کلاینتها آی پی ولید ندارند و یا اینکه پشت nat ویا فایروال هستند

ویا با داشتن یک سرور چنین کاری را چگونه میشه پیاده سازیش کرد؟

ho3ein.3ven
شنبه 23 آبان 1394, 22:22 عصر
منم دوست دارم این زمینه رو یاد بگیرم . فک کنم با پروتوکل xmpp این کار رو انجام میدن

rezaricky
شنبه 23 آبان 1394, 23:13 عصر
سلام . این تصویر مال اپل هست ولی روال push notification در اندروید هم تقریبا یکسانه
1- موبایل کاربر یک درخواست به سرور اپل ارسال کرده و یک توکن دریافت میکند
2- سرور اپل (یا گوگل ) توکن را به موبایل کاربر میفرستد.
3- موبایل کاربر توکن دریافتی را به سرور توسعه دهنده برنامه ارسال می کند.
4- هر موقع توسعه دهنده بخواهد push notification ارسال کند ، توکنی را که از کاربر دریافت کرده به همراه پیام به سرور اپل(گوکل) میفرستد .
5- سرور اپل ( گوگل ) ان را دریافت کرده و به موبایل با توکن داده شده ارسال میکند.
نکته : دستگاه کاربر در هنگام انلاین بودن همیشه بصورت نامحسوس یک ارتباط با سرور اپل ( گوگل ) دارد.

136770

ho3ein.3ven
شنبه 23 آبان 1394, 23:17 عصر
میشه در مورد این ارتباط نامحسوس توضیح بدین ؟

rezaricky
شنبه 23 آبان 1394, 23:29 عصر
میشه در مورد این ارتباط نامحسوس توضیح بدین ؟
مثلا در اندروید ، اسمارت فون کاربر همیشه یک ارتباط ( Connection)زنده با سرور گوگل دارد ، در این ارتباط در حالت عادی داده بسیار کمی رد و بدل میشود که فقط برای زنده ماندن ارتباط است.
اما زمانی که پیامی از یکی از سرورهای توسعه دهنده برنامه به سرور گوگل ارسال شود ، سرور گوگل از طریق همین ارتباط داده را به دستگاه کاربر ارسال میکند.
تمام push notification هایی که به دستگاه کاربر ارسال میشوند از طریق همان ارتباطی که گفته شد ارسال میشوند بعبارت دیگر تمام برنامه های که روی دستگاه کاربر نصب شده اند از طریق همان ارتباط push notification را دریافت می کنند و برای هر برنامه connection جدیدی ایجاد نمیشود که باعث پایین امدن میزان داده مصرفی میشود.

pbm_soy
یک شنبه 24 آبان 1394, 00:44 صبح
سوالی که پیش میاد این است که نوع این ارتباط باز چیست؟ از نوع سوکت است؟ چه نوع سوکتی؟
من تاحالا این موارد را بررسی نکردم ولی اگر دوستان چک کردن اینجا بگن که ما هم استفاده کنیم

طبق سناریو بالا که صحیح هم بود دستگاه کلاینت خودش به سرور گوگل وصل میشود و معرفی میکند و از آن کدثبت میگیرد و آنرا به سرور برنامه نویس میدهد تا درصورت نیاز سرور پیامی را به آدرس گیرنده بفرستد که در اینجا آدرس گیرنده همان کدثبتی است که گوگل داده
این کدثبت را به هر دستگاهی گوگل میدهد در این مرحله است که طبق گفته شما دوستان یک کانکشن باز نگه داشته میشود تا درصورت لزوم از طریق آن پیامی به دستگاه کلاینت ارسال شود پس در سرور گوگل دیتابیسی از تمام کانکشنها و کدثبتها باید وجود داشته باشد
این مورد منطقی است ولی کمی حجم کارش بالاست حتی خود گوگل هم به این سرور اسم cloud connection server را داده است سروری که کانکشنها را مدیریت میکند
و شاید روشهای بهینه تر دیگری هم داشته باشد و روش دیگری نداریم البته اگر بخواهیم براساس سوکت اینکار را انجام دهیم! ولی روشهایی که در وب سوکت و webrtc استفاده میشوند چی؟! فکر میکنم این روشها بهتر باشند
چون در این روش حتی با قطع شدن کانکشن موردنظر احتمالا تمام مراحل دوباره تگرار میشود شاید نمیشه دقیق نمیدانم باید پروتکل را ببینیم ویا بار زیادی بروی سرور گوگل وارد میشود که باید کلی کانکشنها را به همراه کدثبتها مدیریت کند و همینطور نگذارد قطع شوند