PDA

View Full Version : پیاده سازی Google Cloud Messaging با آی پی ایران ؟



haniiii
دوشنبه 28 بهمن 1392, 01:30 صبح
سلام دوستان

ممنون میشم کسانی که از Google Cloud Messaging استفاده کردن توضیح بدن که با آی پی ایران آیا کار میکنه یا نه ؟

بنده یه بار ازش استفاده کردم گوشی رجیستر میشد ولی مسیجی براش نمیرفت ... ممنون میشم اگر از این سرویس استفاده کردین تجربیاتتون رو اینجا share کنید

relax62006
شنبه 11 مرداد 1393, 19:48 عصر
سلام
منم همین سوال رو دارم

Nevercom
یک شنبه 12 مرداد 1393, 01:57 صبح
با IP ایران مشکلی نداره. اما پیشنهاد من استفاده از Parse هست. خیلی راحت تو برنامه استفاده می کنید، خودش پنل برای ارسال داره و REST API برای استفاده در کدهای سمت سرور داره، و اینکه برای استفاده ازش نیازی به سرور ندارید. و برخلاف GCM نیازی نداره که حتماً روی گوشی یک اکانت فعال گوگل وجود داشته باشه
پیاده سازی GCM هم دردسر هایی داره. پیشنهاد من اینه که اگر ماهانه ۱ میلیون Push Notification براتون کمه برید سمت GCM در غیر اینصورت برید سمت Parse.

pouya1999best@g
یک شنبه 12 مرداد 1393, 04:52 صبح
parse هم بدرد نمیخوره؛
هر وقت بخواد میاد.هر وقت هم نخواد نمیاد.
سرویسی هست که پیام ها رو بصورت Alert Dialog نشون و نه Notification؟؟؟
من یه تاپیک باز کردم که هیچ دوستی بلد نبود.
گفتم اگر نسخه جدید برنامم توی بازار منتشر شد،برنامه بصورت اتوماتیک از بازار اطلاعات نسخه و تغییرات جدید رو بگیره و توی یک AlertDialog نمایش بده.
این سرویس جوری باشه که اگه توی برنامه هم نبودیم،به محض ورود،پیام نمایش داده بشه.
شما بلد نیستید پیاده سازی اینو؟؟؟
یعنی گرفتن اطلاعات از بازار رو؟؟؟

Nevercom
یک شنبه 12 مرداد 1393, 11:45 صبح
اول اینکه اون Notification حالت پیشفرض هست و در ساده ترین حالت، شما می تونید اطلاعات رو خودتون دریافت کنید و به هر شکلی که مایل بودید نمایش بدید. من تو برنامه م تو یک اکتیویتی نمایش میدم.

آیا هاست یا سرور دارید یا نه ؟
اگه دارید که نیازی به پیچیده کردن موضوع نیست، یک فایل تو سرورتون بزارید که هروقت بهش درخواست اومد شماره نسخه و اطلاعات دیگه رو بصورت پاسخ ارسال کنه، تو برنامه هم چک می کنی اگه شماره نسخه ی سرور از شماره نسخه ی برنامه بالاتر بود، AlertDialog رو نمایش بده.

اگر هم هاست یا سروری ندارید، همین Parse همچین قابلیتی در اختیارتون میزاره. با JavaScript باید بنویسید.

و در نهایت همین Push Notification هم میتونه یک روش ساده و کارا باشه.

به هرحال من هم GCM رو تست کردم و هم Parse رو، پیاده سازی GCM سمت سرور کمی دردسر داره. و از دید من کیفیت سرویس هردو مشابه هست.

pouya1999best@g
یک شنبه 12 مرداد 1393, 12:00 عصر
راه دیگه ای نداره؟؟؟
با parse مشکل دارم.کارکردش خیلی بده.
GCMهم واسه ما تحریمه و بدرد نمیخوره

Nevercom
یک شنبه 12 مرداد 1393, 12:08 عصر
اگر Push Notification نیاز دارید، تنها دوراه دارید: Parse و GCM. هردو خوب کار می کنن و هردو با ایران هیچ مشکلی ندارن (برای ثبت نام برای خدمات گوگل باید از IP غیر ایران برسید، اما بعد از فعال کردنش محدودیتی نه برای شما و نه کاربرانتون نداره)

اگر هدف چک کردن بازاره یک اسکریپت php میتونه این کار رو انجام بده، یعنی باید سرور یا هاستی داشته باشید. انجام اینکار داخل اپلیکیشن اندروید چندان منطقی نیست.
اگر این مورد هم براتون در دسترس نیست، یک فایلی متنی جایی که در دسترس باشه آپلود کنید و هربار که برنامه باز شد دانلودش کنید و اطلاعاتش رو بخونید.

تقریباً تمام راه حل های موجود این ها هستن، هرکدوم براتون مناسب تر هست رو انتخاب کنید

pouya1999best@g
یک شنبه 12 مرداد 1393, 12:13 عصر
اگر این مورد هم براتون در دسترس نیست، یک فایلی متنی جایی که در دسترس باشه آپلود کنید و هربار که برنامه باز شد دانلودش کنید و اطلاعاتش رو بخونید.
میشه درباره این بیشتر توضیح بدید؟؟؟

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

Nevercom
یک شنبه 12 مرداد 1393, 12:23 عصر
ساده ترین حالت اینه که یک فایل متنی بسازید، مثلاً تو خط اولش شماره نسخه باشه، خط دوم به بعد تغییرات، بعد اینو یک جا آپلود می کنید، تو اپلیکیشن هربار اینو دانلود می کنید، خط اولش رو می خونید و با شماره نسخه ی فعلی مقایسه می کنید و اگه بیشتر بود یعنی نسخه ی جدید اومده. هربار که نسخه ی جدید رو منتشر کردی این رو هم آپدیت کن.

مورد دوم هم به این صورت هست: چون بازار API برای خوندن اطلاعات برنامه ها ارائه نداده، شما باید این رو خودتون بخونید، یعنی وب پیج اون اپلیکیشن رو باز کنید و اطلاعات رو استخراج کنید.

مثلاً با استفاده از cURL اون وب پیج رو می خونید و میریزید تو یک متغیر، حالا باید بر طبق الگویی اطلاعات موردنظر رو از بین کدهای HTML بیرون بکشید، بری این کار می تونید از RegEx یا DOMXpath استفاده کنید.

pouya1999best@g
یک شنبه 12 مرداد 1393, 12:29 عصر
پیاده سازی parse یه کم پیچیدس؛
چک کن ببین من درست پیاده سازی کردم یا نه؛

121924

اول یه کلاس اپلیکیشن میسازیم و کد بالا رو قرار میدیم.

121925

بعد توی MainActivity(اینجا اسمش Notifyه) کد بالا رو قرار میدیم.
توی خط سوم parse اول this و بعدش دوباره همین اکتیویتی.class؟؟؟

121926

بعدشم توی تگ اپلیکیشن در مانیفست،انتهای نام پکیج برنامم parseApplication رو مینویسیم.

کارایی که کردم درسته؟؟؟

Nevercom
یک شنبه 12 مرداد 1393, 13:02 عصر
اول کلاس اپلیکیشن رو بسازید و Parse رو راه اندازی کنید، یعنی سه خط کد زیر رو تو کلاس Application بزارید:

Parse.initialize(this, "APPLICATION_ID", "CLIENT_KEY");
PushService.setDefaultPushCallback(this, YourActivity.class);
ParseInstallation.getCurrentInstallation().saveInB ackground();

با همین سه خط کد و البته تغییراتی که در مانیفست دادید، Push Notification رو دریافت خواهید کرد و وقتی روش کلیک شد، وارد اکتیویتی ای که تعیین کردید میشه.

اگر هم می خواید تعداد اجرای برنامه رو داشته باشید، در MainActivity کد زیر رو بزارید:
ParseAnalytics.trackAppOpened(getIntent());
در هنگام ارسال Push Notification می تونید از خاصیت intent استفاده کنید که باعث میشه هنگام دریافت Push Notification توسط اپلیکیشن، بجای نمایش Notification که رفتار پیشفرض هست، یک Intent اجرا بشه و داده ها براش ارسال بشه. با استفاده از این قابلیت به هر روشی که دوست دارید می تونید دریافت Push رو مدیریت کنید و شاید اصلاً نمایشش ندید و عملکرد برنامه رو تغییر بدید.

pouya1999best@g
یک شنبه 12 مرداد 1393, 13:15 عصر
بنظرتون برای کار من روش دانلود فایل متنی بهتره یا parse؟؟؟
راستی من برای گزارش فورس کلوز و دیدن تعداد نصب برنامم و منطقه استفاده کاربرا از برنامم از flurry استفاده میکنم.
پیشنهاد بهتری دارید؟؟؟

Nevercom
یک شنبه 12 مرداد 1393, 13:33 عصر
خب با Push Notification محدود به این قابلیت خاص نیستید و می تونید هر پیامی رو در هر زمانی برای کاربرانتون بفرستید. اگه هدف فقط همین مورد هست، هرکدوم واسه خودتون راحت تره رو انتخاب کنید.

من از Flurry استفاده می کنم و خیلی کامل و جامع هست، اما سرویس جدیدی وجود داره بنام Crashlytics که مال Twitter هست و بسیار عالی هست (به کاملی Flurry نیست)، پیشنهاد می کنم حتماً تستش کنید. بخصوص که اطلاعات Real-time بهتون میده.

pouya1999best@g
یک شنبه 12 مرداد 1393, 13:54 عصر
ParseAnalytics.trackAppOpened(getIntent());
PushService.setDefaultPushCallback(this,Notify.cla ss);
ParseInstallation.getCurrentInstallation().saveInB ackground();

گفتید این کدا هر کدوم چکار میکنن؟؟؟(خط به خط توضیح بدید)
کجا بزارمشون؟؟؟

Nevercom
یک شنبه 12 مرداد 1393, 14:06 عصر
البته من با این ترتیب ننوشتم کد ها رو.

خط اول رو اگر در اکتیویتی اصلی بزارید، با هربار باز شدن، مقدارش رو میفرسته به سرور Parse و در اون نمودار بهتون نشون میده که در هر روز چندبار برنامه تون باز شده (پس مهمه که توی همه ی اکتیویتی ها این کد رو قرار ندید که اطلاعات غلط بهتون نده)

خط دوم یک اکتیویت رو به Parse معرفی می کنه که وقتی روی Notification کلیک شد اون اکتیویتی باز میشه و اطلاعات براش ارسال میشه.

خط سوم هم کد داخلی Parse هست که باعث میشه دستگاه در سرور Parse رجیستر بشه.

توجه داشته باشید که اول از همه و قبل از همه ی این کدها باید Parse.initialize اجرا بشه

pouya1999best@g
یک شنبه 12 مرداد 1393, 14:25 عصر
Parse.initialize چیه؟؟؟
یعنی این کد ها (بجز اون یه خط) باید توی همه اکتیویتی ها کپی بشه؟؟؟

pouya1999best@g
دوشنبه 13 مرداد 1393, 14:46 عصر
Parse.initialize مگه توی همون کلاس اپلیکیشن نیست؟؟؟پس خودش اول از همه بصورت خودکار اجرا میشه
اون سه خط پس باید توی MainActivity باشه؟؟؟
اگه برنامه بسته باشه و ما نوتیفیکیشن بفرستیم،کاربر به دستش نمیرسه پیام؟؟؟
اگه برنامه رو بعد از ارسال نوتیفیکیشن توسط ما باز کنه چی؟؟؟

Nevercom
دوشنبه 13 مرداد 1393, 15:43 عصر
پست شماره 11 من رو دوباره بخونید، اون سه خط کد نوشتم در کلاس اپلیکیشن توشته میشه و تو هیچ اکتیویتی ای نیاز نیست قرار داده بشه.

درصورتی که می خواید Parse میزان باز شدن برنامه رو پنل نمایش بده، کد دوم (trackAppOpened) رو فقط در MainActivity قرار بدید.

در این صورت اگر برنامه بسته باشه هم Notification به دست کاربر میرسه.

و خب وقتی کلاس Application رو تعریف می کنید، تو مانیفست هم باید بعنوان کلاس Application معرفیش کنید.

pouya1999best@g
دوشنبه 13 مرداد 1393, 16:15 عصر
توی مانیفست،همون کلاس اپلیکیشنی که پیشفرض نوشته شده بود،رو براش اسم parse رو گذاشتم
مشکلی پیش نمیاد؟؟؟

Nevercom
دوشنبه 13 مرداد 1393, 16:53 عصر
<application
android:name="path.to.your.application.class"
.
.
.
</application>

pouya1999best@g
دوشنبه 13 مرداد 1393, 18:59 عصر
این همونه پیشفرض توی مانیفست موجوده؟؟؟
اونو اینجوری تغییر بدم؟؟؟

pouya1999best@g
سه شنبه 14 مرداد 1393, 01:53 صبح
همه این کا را رو کردم؛اما وقتی نوتیفیکیشن میفرستم هیچ عملی توی گوشیم نمیبینم

pouya1999best@g
سه شنبه 14 مرداد 1393, 16:46 عصر
همه این کا را رو کردم؛اما وقتی نوتیفیکیشن میفرستم هیچ عملی توی گوشیم نمیبینم
بالاخره پیاده سازیش کردم؛
روشش تغییر کرده؛باید چند تا پرمیشن و سرویس جدید به مانیفست اضافه کنیم؛
توی سایتش یاد داده
یه سوال درباره همون کدی که تعیین میکنه با کلیک روی پیام به کدوم اکتیویتی بریم:
چجوری بهش بگیم که وقتی روی پیام کلیک شد به صفحه برناممون توی بازار بره؟؟؟

khademolhojaj5
یک شنبه 26 بهمن 1393, 11:35 صبح
بالاخره پیاده سازیش کردم؛
روشش تغییر کرده؛باید چند تا پرمیشن و سرویس جدید به مانیفست اضافه کنیم؛
توی سایتش یاد داده
یه سوال درباره همون کدی که تعیین میکنه با کلیک روی پیام به کدوم اکتیویتی بریم:
چجوری بهش بگیم که وقتی روی پیام کلیک شد به صفحه برناممون توی بازار بره؟؟؟



دوست عزیز شما نیتونی با json این کار رو بکنی
و داخل پنلت توی parse پیام رو به صورت json ارسال کنی.