روزنوشت

می نویسم؛ تا به یاد آورم روزی، بودم

روزنوشت

می نویسم؛ تا به یاد آورم روزی، بودم

روزنوشت

من آرزویی ندارم، من از چیزی نمی‌ترسم، من آزادم...

«کازانتزاکیس»

دنبال کنندگان ۳ نفر
این وبلاگ را دنبال کنید
آخرین نظرات

مدتها پیش در پستی جداگانه Parse SDK رو برای راه اندازی Push Notification در اندروید معرفی کرده بودم، دوست داشتم که آموزشی رو برای این ابزار فوق العاده معرفی کنم که فرصتش نمیشد.

 

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

بالاخره فرصت شد و ویدئویی رو برای راه اندازی قابلیت Push Notification توسط Parse SDK برای Android تهیه کردم.

 

در این ویدئو مطالب زیر شرح داده شده:

  • ایجاد App در سایت Parse.com و دریافت API Key و Client Key
  • آماده سازی اولیه اپلیکیشن اندروید برای استفاده از این سرویس
    • دسترسی های موردنیاز
    • تعریف بخش های موردنیاز در Manifest.xml
    • ایجاد کلاس Application و معرفی اون به مانیفست
    • راه اندازی Parse در کلاس Application
  • شخصی سازی رفتار Parse هنگام دریافت Push توسط BroadcastReceiver شخصی
    • عدم نمایش Notification بهنگام در یافت Push
  • باز شدن آدرس URI خاص هنگام کلیک روی Notification (مثلاً باز شدن اپ شما در بازار)

 

این آموزش با نسخه ی 1.7.1 Parse SDK ساخته شده

 

همچنین در BroadcastReceiver اختصاصی (منظور کلاسی هست که از ParsePushBroadcastReceiver مشتق شده و برای شخصی سازی رفتار Parse استفاده میشه)، کدهایی درج شده که برای اصلاح باگ موجود در این نسخه از SDK هست که هنگام دریافت Push، در صورتی که uri تعریف نشده باشه، اپلیکیشن کرش می کنه (البته در ویدئو این کدها هنوز نوشته نشدن و دیده نمیشن)

 

لینک دانلود سورس کد و دانلود مستقیم ویدئو در انتهای پست موجود هست (برای نمایش با کیفیت اصلی فایل ویدئو رو دانلود کنید)

 


دریافت
مدت زمان: 20 دقیقه 38 ثانیه

 

لینک مشاهده ی ویدئو در آپارات: http://www.aparat.com/v/y1SKe

لینک دانلود مستقیم سورس کد (با حجم ۱.۵ مگابایت): http://bayanbox.ir/id/3556426083468599252

لینک دانلود ویدئو (با حجم ۹۵ مگابایت): http://bayanbox.ir/info/1329033310426575836/Parse-Push-Tutorial

 

پی نوشت: 

در ویدئو اشاره کردم که متد getNotification متدی هست که باهاش می تونیم Notification رو شخصی سازی کنیم (که درست هست)، همچنین اشاره کردم که می تونید بجای نمایش Notification بصورت یک Dialog نمایشش بدید و یا اصلاً نمایش ندید، که با توجه به خروجی متد که از جنس کلاس Notification هست، درست نیست و باید اصلاح بشه: این شخصی سازی ها باید در متدی مثل onPushReceived صورت بگیره.

نظرات (۵۱)

آقا می شه بیشتر بنویسی؟ تاریخ پست قبلیتو نگاه کن...

ممنون
پاسخ:
سلام

خودم هم دوست دارم بیشتر بنویسم، فکر می کنم باید به کارهام نظم بیشتری بدم و فرصت بیشتری برای نوشتن پیدا کنم.

ممنون از نظرتون
با سلام
فیلم آموزشی بسیار عالی بود. من مدت‌ها دنبال این راهنما می‌گشتم که در وبلاگ شما پیدا کردم. مخصوصاً اینکه شما باگ این SDK را رفع کرده بودید. اما در بین کد‌ها می‌خواستم بدانم کد:
 Log.v("com.parse.ParsePushReceiver",
                    "Unexpected JSONException when receiving push data: ", e);
چه کاری را انجام می‌دهد؟
پاسخ:
سلام

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

درواقع اون کدها رو من ننوشتم، مشکل رو که دیدم جستجو کردم و پاسخ رو در StackOverflow پیدا کردم: http://stackoverflow.com/a/26252760/1686304
درواقع این کد، مربوط به قسمتی از کدهای SDK هست که اینجا کپی شده، با این تفاوت که کد مربوط به نبودن کلید uri رو اصلاح کرده.

اون قسمت هم مربوط به زمانی هست که JSON ارسالی مشکل داشته باشه. (فقط پیام رو Log می کنه اون یک خط کد)
سلام
ممنون از آموزشتون، من یک Switch ساخته ام تا کاربر بتواند Push Notification فعال یا غیرفعال کند، با استفاده از چه دستوری می‌توان Push Notification غیرفعال و دوباره فعال نمود؟
پاسخ:
ساده ترین کار این هست که متد onPushReceived رو Override کنید.
اونجا چک کنید اگه مثلاً کاربر تمایل به دریافت داشت (که میتونه یه مقدار رو از SharedPreferences بخونه)، متد super.onPushReceived رو صدا بزنه، در غیر اینصورت نه.

می تونید از Channel هم استفاده کنید، که مثلاً تو سرویستون دوتا Chanell داشته باشید، اونایی که مایل به دریافت هستن و اونایی که نیستن.
و مسلماً هنگام ارسال فقط اونایی که تمایل دارن رو هدف قرار میدید.

روش اول رو ترجیح میدم.
در حال حاضر کد Switch من به شکل زیر است:(البته الان نا مرتب دیده می‌شوند)
final Switch aSwitch = (Switch) findViewById(R.id.switch1);
                final SharedPreferences shp = getSharedPreferences("sett", MODE_PRIVATE);
                swt = shp.getBoolean("chk", true);
                aSwitch.setChecked(swt);
                aSwitch.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
     
                        if (aSwitch.isChecked()) {
                            Toast.makeText(MainActivity.this,"فعال ",Toast.LENGTH_LONG ).show();
                      } else{
                      
                        Toast.makeText(MainActivity.this,"غیر فعال ",Toast.LENGTH_LONG ).show();
                        }
    
                        SharedPreferences.Editor shpE = shp.edit();
                        shpE.putBoolean("chk", aSwitch.isChecked());
                        shpE.commit();
                    }
                });

میشه کمی بیشتر راهنمایی کنید؟
با تشکر

پاسخ:
سلام

پیشنهاد می کنم کدها رو در سایت هایی مثل paste.ubuntu.com قرار بدید و لینکش رو درج کنید تا مشکل فرمتینگ هم نباشه.

کد پیشنهادی من به این صورت هست که متد onPushReceive رو در کلاس PushBroadcastReceiver که در ویدئو توضیح دادم، Override کنید و در اون متد چک کنید که اگر تمایل به نمایش Push نداشتن، از نمایشش جلوگیری بشه.

کد پیشنهادی من رو اینجا ببینید: http://paste.ubuntu.com/8900832

البته تستش نکردم و بر اساس تحقیقاتی که هنگام ساخت ویدئو انجام داده بودم کد رو نوشتم، لطفاً بررسی کنید و اگر جواب نمیداد بفرمایید تا بررسی کنم.

فقط حواستون باشه که مطمئن بشید مقدار کلید chk در SharedPreferences به درستی ست میشه.
خیلی ممنون واقعا کمک خیلی بزرگی کردید، کد به درستی اجرا می‌شود. آرزوی بهترین‌ها را برایتان دارم.
پاسخ:
خواهش می کنم :)

پیروز باشید.
من هنگامی که برنامه خود را برای اولین بار روی دستگاهی نصب می‌کنم،  دوبار یک Push را دریافت می‌کنم در حالی تنها یک Push فرستاده می‌شود. اما بعد از روشن، خاموش کردن دستگاه و یا دوباره باز نمودن برنامه مشکل حل می‌شود. مشکل چی می‌تونه باشه؟
پاسخ:
وقتی درحال توسعه ی برنامه هستیم، زیاد اتفاق می افته که برنامه رو حذف کنیم، دوباره نصب کنیم و نسخه های مختلفی رو تست کنیم.
پارس و سایر سرویس های مشابه، برای تشخیص دستگاه سعی می کنن یک ID منحصربفرد از اون دستگاه بسازن و دستگاه رو با اون ID در سیستم خودشون ثبت می کنن.
و بعد از ایجاد ID اون رو در جایی ذخیره می کنن تا هربار نخواد تولید بشه.

بخاطر مواردی که بالاتر عرض کردم، بعضی وقتا دستگاه با چند ID ذخیره میشه در سیستم پارس و به همین دلیل چند نوتیفیکیشن دریافت می کنید.

جای نگرانی نیست البته، این اتفاق برای کاربر نهایی به ندرت می افته، خیلی خیلی کم
سلام...میشه اموزش زوم کردن روی یک imageview با دوبار لمس روی صفحه گوشی رو بذارید؟ همین double tap zoom
ممنون
سلام دوست گرامی
خیلی آموزش خوب و مفیدی بود. واقعا ممنونم
من سه تا مشکل دارم:
1. فعلا در مرحله تست، من نرم افزارم رو روی دوتا گوشی نصب کردم اما در سایت فقط یک device ثبت شده رو شناسایی میکنه و پیام رو فقط برای یک گوشی میفرسته

2. وقتی برنامه رو از حالت اجرا خارج میکنم و یک پوش میفرستم با پیغام کرش  برنامه مواجه میشم و نوتیفیکیشن نمایش داده نمیشه. 
درواقع باید حتما یک بار برنامه اجرا بشه و بعد از حافظه هم خارج نشه تا درست نمایش داده بشه

3. من میخوام وقتی روی ناتیفیکیشن کلیک میشه به یک اکتیویتی غیر از main activity برنامه ام بره و همراه خودش هم یک متغیر اضافه که بوسیله josn در همون push فرستادم به اکتیویتی که میخام بره ارسال بشه.
مثلا این رو پوش میکنم:
{ "alert" : "test1",
"title" : "testest" ,
"tid" : "2"
}
بعد میخام وقتی رو پیغام کلیک میشه بره به اکتیویتی محصولات و محصول دوم رو نمایش بده.

ممنون میشم اگه ممکنه باشه راهنمایی کنید
پاسخ:
سلام

ممکنه کمی طول بکشه تا دستگاه ها در پنل پارس نمایش داده بشن،اما طبق تجربه ی من دستگاه ها با درصد خیلی بالایی درست ثبت میشن.


باید LogCat رو بررسی کنید تا ببینید دلیل بروز خطا چی بوده، اما اگر طبق آموزش پیش رفته باشید و المنت ها و دسترسی های مورد نیاز رو در منیفست وارد کرده باشید، و همچنین Parse رو در کلاس Application برنامه Initialize کرده باشید، نباید مشکلی پیش بیاد.

و در نهایت در ویدئو توضیح داده شد که چطور تعیین کنید که با کلیک روی نوتیفیکیشن کدوم اکتیویتی باز بشه، و JSON ارسالی در هر اکتیویتی ای که باز بشه یا در کلاس ParsePushBroadcastReceiver در intent دریافتی و تحت کلید com.parse.Data در دسترس هست.
مثلاً میتونید پس از باز شن اکتیویتی چک کنید اگر کلید tid موجود بود مقدارش رو بگیرید و محصول متناظر رو نمایش بدید.
سلام دوست عزیز ممنون از راهنمایی خوبتون
یه سوال برای من پیش اومده این محدودیت ارسال نتیفیکشن در این سرویس ماهیانه یک میلیون تا میباشد یا کلا یک میلیون میشه داد؟
ممنون
پاسخ:
هر ماه میتونید بی نهایت Push Notification برای ۱ میلیون کاربر متفاوت ارسال کنید، یعنی اگر کمتر از ۱ میلیون کاربر داشته باشید هر ماه می تونید بی نهایت Push برای کاربرهاتون ارسال کنید و نیاز به ارتقاء حساب هم نداشته باشید
سلام
ببخشید میشه لطف کنید بگید چجوری میتونم از سایت پیامی رو به طرف سرور push Notification ارسال کنم تا در صف قرار بگیره و به طرف کلاینتها ارسال بشه
با تشکر فراروان
پاسخ:
سلام

پارس برای PHP یه SDK داره، البته میتونید از REST API هم استفاده کنید که وابسته به پلتفرم خاصی نیست.
اینجا رو بخونید: https://www.parse.com/docs/php/guide#push-notifications

ابتدا با کدی مثل کد زیر پارس رو آماده کنید:
\Parse\ParseClient::initialize($appId, $restKey, $masterKey);

بعد میتونید بقیه ی عملیات رو اجرا کنید، مثلاً برای ارسال Push از کدی شبیه به کد زیر استفاده کنید:

$data = array("alert" => "Hi!");

\Parse\ParsePush::send(array(
  "channels" => ["PHPFans"],
  "data" => $data
));
بازم سلام
ممنون از جوابتون
ولی راستش من از کدهاتون چیزی متوجه نشدم اینا به چه زبانی هست؟
من برنامه نویس asp هستم و تازه اندروید رو شروع کردم
اینا که نوشتیند php یا reset api ؟
میخواستم بدونم دنبال کدوم باید برم یاد بگیرم؟!

پاسخ:
کدها که  PHP هست (خودتون هم اشاره کردید)

فقط خواستم اضافه کنم که اینجا لیستی از کتابخانه هایی هست که برای پارس میشه ازشون بهره برد: https://www.parse.com/docs/api_libraries

اگر هم برای زبان مورد استفاده موجود نبود، مستقیم از REST API میشه استفاده کرد: https://www.parse.com/docs/rest/guide
به کمک دوستم متوجه شدم این دستورات PHP هست
پس من باید برم دنبال REST API تا بتونم توی ASP ازش استفاده کنم
این لینک پیدا کردم ،البته فکر کنم واسه جاواست !ولی  گفتم بزارم شاید بدرد کسی خورد
http://stackoverflow.com/questions/26831405/send-push-notification-with-parse-from-app-engine

با تشکر فراوان
پاسخ:
ممنون
  • میلاد اکبریان
  • سلام خسته نباشید.
    واقعا متشکرم اموزش عالیی بود.
    پاسخ:
    خواهش می کنم :)
    سلام خسته نباشید
    لینک دانلود ویدیو را مجددا قرار بدید
    دانلود نمیشه
    ممنون
    پاسخ:
    سلام، سروری که ویدئو توش موجود بوده ظاهراً منقضی شده، البته تو آپارات موجود هست.
    سعی می کنم تو بیان هم آپلود کنم
    با سلام مجدد
    لینک در آپارات کیفیت لازم را ندارد
    اگر امکان دارد جایی آپلود کنید که استفاده کنیم
    بسیار ممنون
    پاسخ:
    سلام، فایل رو در بیان آپلود کردم و لینک دانلود به پست هم اضافه شده

    http://bayanbox.ir/info/1329033310426575836/Parse-Push-Tutorial
    سلام
    بسیار ممنون
    خدا خیرتون بده
    سلام و خسته نباشید

    خیلی خیلی ممنون بابت اموزش خوب و مفیدتون. میشه لطفا یه سمپل ساده از پیاده سازی push notification با استفاده از gcm قرار بدید.
    پاسخ:
    واسه GCM این آموزش خوبیه: http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/
    این اموزش قبلا دیدم ولی به نظرم یکم پیچیده است دنبال یه سمپل ساده تر میگردم
    پاسخ:
    البته الان کتابخانه ی GCM متفاوت از چیزی هست که تو اون آموزش استفاده شده و جزئی از کتابخانه ی Google Play Services هست.

    اصول کلی اینه که شما اول با این کتابخانه دستگاه رو رجیستر می کنید که یک شناسه ی منحصربفرد بهتون میده، شما این شناسه رو پس از دریافت به سرور خودتون ارسال می کنید تا بعداً بتونید با ارسال اسن شناسه به سرور گوگل براش پوش ارسال کنید.

    در نهایت هنگام ارسال پوش در سرور خودتون، لیستی از شناسه ها رو به سرور گوگل ارسال می کنید (سابقاً در دسته های ۱۰۰۰ تایی) 
    البته این اموزش هم خیلی ساده است :
    http://www.androidbegin.com/tutorial/android-google-cloud-messaging-gcm-tutorial/
    فقط نمی دونم چطور نوتیفیکیشن به تمام دیوایس های رجیستر شده ارسال کنم؟!
    سلام من بi یه مشکل خوردم میخواستم کمکم کنید وقتی میرم داخل سایت parse و یه اکانت میسازم و یه نرم افزار هم ایجاد کردم داخلش و حالا که بر روی send push کلیک میکنم این ارور رو No registered devices میده مشکل از چیه؟
    پاسخ:
    سلام

    در این مرحله باید SDK رو دانلود کنید و تو برنامه ی موبایل پیاده سازیش کنید، و برنامه رو روی گوشی اجرا کنید تا حداقل یک دستگاه در سیستم پارس ثبت بشه، پس از اون اگر Push Notification رو بفرستید دریافت خواهد شد.


    سلام فیلم که وسطش قفل میکنهههههه !!!!!!!

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

    بدون خروجی LogCat پیدا کردن دلیل مشکل خیلی سخته، خروجی LogCat رو بزارید تا بررسی کنم
    http://s3.picofile.com/file/8206440992/log.txt.html


    اینم LOGCAT برنامه
    پاسخ:
    خطا میگه که کلاس com.parse.Parse رو نمیتونه پیدا کنه، احتمالاً کتابخانه رو درست اضافه نکردید به پروژه.

    سلام من پوش که ارسال میکنم وقتی هم که  دریافت میکنم میخوام بره به یه لینکی نمیره . میره به صفحه اصلی برنامم من کد های JSON  رو درست وارد میکنم. مشکل از چیه.


      "alert": "TEST", 
      "title": "TESTTTTT", 
      "uri": "www.google.com" 
    }
    پاسخ:
    گمان می کنم باید آدرس رو کامل بنویسید، مثلاً http://www.google.com
    سلام مهندس
    شما راجع به ایجاد انیمیشن در لیست ویو در هنگام اسکرول در اکلیپس می تونید راهنمایی کنید؟
    لطفا پاسخ بدین...

    با سلام اول جا داره از آموزشتون تشکر کنم و براتون آرزوی سلامتی و سربلندی کنم.
    یه سوال مهندس ... داخل سورس که خودتون گذاشتین وقتی پیام ارسال میشه با کلیک بر روی اون {
      "alert": "",
      "title": "",
      "uri": ""
    }
    این متن نمایش داده میشه ... آیه امکان داره به جای این یه متن دلخواه نمایش بدیم؟
    ممنون میشم توضیح بدین.
    پاسخ:
    سلام

    کلید alert متن اصلی شما هست، کلید title عنوانی هست که در Notification بزرگتر نمایش داده میشه.
    اگر همین متنی که بالا دکر کردید رو در اپلیکیشن دریافت می کنید، سوئیچ Message Type رو در هنگام ارسال روی JSON قرار ندادید
    با سلام.
    این کتابخونه پارسه رو از کجا دانلود کنم؟ لطفا یه لینک از کتابخونش بذارید.ممنون.راستی آموزشتونم خیلی خوب و قدم به قدم بود.
    پاسخ:
    خوشحالم براتون مفید واقع شده.

    از اینجا دانلود کنید: https://www.parse.com/downloads/android/Parse/latest
  • حسن زینالی
  • سلام
    ممنون از آموزش عالیتون
    اگر ممکنه آموزش نوتفیکیشن اجباری با کلیک رو بزارید.
    یا اگه ممکنه کد رو برام ایمیل کنید.
    ممنون میشم از راهنمایی مجدد شما.
    سلام من تمام کار های که شما انجام دادین رو انجام دادم ولی برنامه رو که اجرا میکنم کرش میکنه.
    وقتی تگی بود که در manifest تعریف کردین برای کلاس MyApplication رو برمیدارم برنامه اجرا میشه.
    مشکل از چیه لطفا راهنمایی کنید
    در لاگ گت میگه که کلاس com.parse.Parse رو نمیتونه پیدا کنه، احتمالاً کتابخانه رو درست اضافه نکردید به پروژه.
    ----------------------------------------
    میشه نحوه اضافه کردن صحیح کتابخانه رو بگید ؟

    سلام و ممنون از آموزش بسیار خوبتون
    من توی نت یه سایت ایرانی به نام پوشه پیدا کردم که شبیه به پارس کار میکنه. خوبیش اینه که خودش همه چی رو پیاده سازی کرده.
    برای دوستانی که حال دردسرهای کد نویسی پوش رو ندارن خوبه
    آدرسش: http://pushe.co
    پاسخ:
    سلام

    ممنون از معرفیتون، قطعاً برای خیلی ها مفید خواهد بود
    سلام دادا .

    تمام مراحل رو انجام دادم ، اما متاسفانه هنگامی که صفحه اپلیکیشن رو ، روی منفیست میذارم برنامه فورس کلوس میده . و وقتی برمیدارم این مشکل هم حل میشه .
    کتابخانه رو هم درست آپ کردم و الان کتاب خانه من شامل هفت فایل هست که تکمیل هستند . ، ، ، هیچ جایی از برنامه نویسی ارور نمیده و موقعی که روی گوشی میاریش ارور میده و برنامه رو میبنده . میتونید کمکم کنید ؟!
    پاسخ:
    سلام

    بدون دیدن خروجی LogCat نمیشه نظر داد، میتونید ایمیل بزنید و سوالتون رو بپرسید، در حد توانم کمکتون خواهم کرد.

    nevercom@gmail.com
    سلام و خسته نباشید

    آیا کدهایی که برای پوش پارسه مینویسیم تو اکلیپس یا b4a با هم فرق داره ؟
    اگر داره شما از کدوم اسافاده می کنید ؟

    ممنون.
    پاسخ:
    خب SDK ارائه شده برای جاوا هست، برای استفاده در B4A احتمالاً باید این کتابخانه تبدیل بشه.
    راستش اطلاعات زیادی در مورد b4a ندارم
    خدا خیرتون بده 
    ممنون از این آموزش خوبتون
    پاسخ:
    ممنونم
    سلام
    خیلی ممنون از ویدیو مفیدتون .
    یه راهنمایی میخواستم . همین مثالی که برای push-notification  استفاده کردید میخوام ببینم میشه به صورت اتوماتیک انجام بشه ؟ یعنی یجوری پارس رو وصل کنم به سرور خودم از طریق یه فایل جیسون . که هروقت اون فایل جیسون دیتایی داشت به صورت اتوماتیک اونو   
    notification
    کنه به یک یوزر خاص .
    مثلا برنامم مثل تلگرام هست که نوتیکیفیشن میده با این تفاوت که من همه اطلاعاتم رو سرور هست و قراره با جیسون از رو اون بخونم و به شخص خاص پیام بدم.
    به نظرتون چظوری میتونم اینو پیاده سازی کنم ؟
    پاسخ:
    من اینطور فرض می کنم که هدف شما این هست که وقتی رویداد X در سرور اتفاق افتاد، نوتیفیکیشن به مجموعه ای از کاربران ارسال بشه.

    پارس برای تعدادی از زبان های تحت وب کتابخانه داره (علاوه بر REST API) که ارتباط با پارس رو راحت تر می کنه.

    شما با استفاده از این کتابخانه میتونید عملیات ارسال پوش رو اتوماتیک کنید، مثلاً وقتی اطلاعات موجود در اون فایل جیسون رو آپدیت کردید، در ادامه پوش رو هم ارسال کنه
    سلام ..تشکر بابت اموزش
    من یه مشکل دارم نمیدونم چطور رفعش کنم؟؟
    http://8pic.ir/images/lkw1kfq0t1piugiis5zj.jpg
    پاسخ:
    راستش نمیدونم مشکل از کجا میتونه باشه
    با سلام خدمت شما استاد محترم
    آیا امکانش هست توی قسمت alert متنها رو در چند خط نمایش بدیم ... منظورم زدن اینتر
    پاسخ:
    سلام، بعد از اتمام هر خط، n\ رو بنویسید
    سلام
    خیلی ممنون از پاسختون .
    این امکان هست که از سرور یه پوش بفرستم به گوشی ولی نوتیفیکیشن نشه و فقط بتونم از اون دیتا تو برنامم استفاده کنم ؟
    اگه امکانش هست یه راهنمایی میکیند لطفا

    خیلی ممنون
    پاسخ:
    بله، فیلد های title و alert برای نمایش در نوتیفیکیشن استفاده میشه.
    شما در JSON ارسالی هر داده ای رو میتونید بفرستید.

    کافیه در کلاسی که برای مدیریت Push Notification نوشتید (تو ویدئو هم یک Subclass از کلاس ParsePushBroadcastReceiver ایجاد کردیم و مدیریت پوش ها رو اونجا انجام دادیم)، و مثلاً در متد onPushReceive چک کنید که اگر داده های خاصی در JSON وجود داشت، اتفاق های متفاوتی رخ بده، مثلاً پوش رو نمایش ندید و داده ای رو در SharedPreferenced قرار بدید.
    ممنون از پاسختون
    ویدیو رو دوباره نگاه کردم کامل متوجه شدم .
    واقعا ممنون از ویدیو کاملی که تهیه کردید
    پاسخ:
    خواهش می کنم :)
    با سلام ... ممنون
  • مرتضی حیدری
  • سلام خدمت شما و ممنون بابت آموزش خوبتون
    آیا parse برای ارسال push حتما نیاز داره که google play service روی گوشی کاربر نصب باشه ؟ ممنون
    پاسخ:
    سلام

    نه نیازی به Google Play Services نیست، درواقع این پیش نیاز رو نیاز نیست به برنامه تون اضافه کنید
    با سلام مجدد . من طبق آموزش پیش رفتم و میتونم جیسونی که از سرورم پارس میشه رو دریافت کنم  . حالا سوالم در مورد مدیریت این جیسون ها هست . برنامه ای که روش کار میکنم تقریبا شبیه چت میمونه . چطور میتونم متوجه بشم کدوم اکتیوی درحال نمایش هست  ؟ درصورتی که کاربر درحال چت با چند نفر باشه اون اکتیوتی که در حال نمایش هست و چت میکنند براش پیام ها نوتیفیکیشن نشه و برای اون بقیه صفحات چت به محض اینکه پیامی ارسال شد نتیفیکیشن ارسال بشه . 
    ممنون میشم توضیح بدید اینو چطوری میشه پیاده سازی کنم
    پاسخ:
    اول این لینک رو ببینید: http://stackoverflow.com/a/5862048/1686304
    اینجا توضیح میده که چطور تو کلاس Application متدی داشته باشیم که بهمون بگه آیا هیچ کدوم از اکتیویتی های برنامه ی ما درحال نمایش هستند، و درواقع این که اپ ما در Background هست یا Foreground.

    حالا اگر نیاز دارید که چک کنید آیا فلان اکتیویتی درحال نمایش هست یا نه، میتونید از روش بالا استفاده کنید اما به متدها پارامتری اضافه کنید که مثلاً نام کلاس ها رو هم بگیره، از اونجایی که در اندروید در هر لحظه تنها یک اکتیویتی میتونه نمایش داده بشه (درحالت استانداردش)، اگر آخرین اکتیویتی که باز شده، اکتیویتی موردنظر ما باشه، پس اکتیویتی ما در حال نمایشه، در غیر اینصورت نه.
    سلام

     اون کدی ک پارسه برای تغییر آیکن پوش میده ک ما تو قسمت منیفست میذاریم  چیه؟؟یا حداقل بکید از کدوم قسمت سایت پارسه باید کدشو بگیرم..؟
    پاسخ:
    این رو در تگ Application در Manifest وارد کنید:
    <meta-data android:name="com.parse.push.notification_icon"
               android:resource="@drawable/push_icon"/>

    اطلاعات بیشتر: https://parse.com/docs/android/guide#push-notifications-receiving-pushes

    سلام.  ممنون از آموزش های خوب و مفیدتون

    ببخشید میخواستم بگم با توجه به اینکه این سرویس توسط فیسبوک خریداری شده و به زودی بسته خواهد شد آیا سرویس های مشابهش هم وجود داره که معرفی کنید؟ 

    البته یه نمونه ایرانیش رو پیدا کردم به اسم پوشه و من امتحانش کردم و خیلی خوب بود ولی میخواستم ببینم غیر از اون هم آیا سرویس خوبی پیدا میشه؟

    پاسخ:
    GCM سرویسی هست که گوگل ارائه میده و Pushe  و حتی پارس (حداقل بخشی از اون) بر مبنای اون ساخته شدن، GCM رایگان هست اما برای استفاده از اون باید سرور داشته باشید و کدهای سمت سرور رو خودتون بنویسید که میتونه کمی پیچیده باشه.

    پیشنهاد من این هست که از سرویسی مثل پوشه استفاده کنید، سرویسی که قبلاً می شناختم Urban Airship هست اما گمان می کنم پلن رایگانش محدودیت بیشتری داشته باشه

    مسلماً در صورتی که هیچکدوم از اینها نیازتون رو برطرف نکردن همیشه میتونید خودتون GCM رو پیاده سازی کنید. اما با توجه به زمان و انرژی ای که می طلبه، استفاده از سرویس های آماده معقول بنظر میرسه
    سلام وتشکر از پاسخگویی ب سوالاتم..چرا برنامه رو طبق روش شما میریم اجرا نمیشه؟؟
    حالا اینو بگذریم
    من خود برنامه شمارو با appid و clientid ک از پارسه گرفتم تست کزدم...هیچی از برنامتونو تغییر ندادم...فقط قسمت اپ آدی و کلاینت آی دی رو تغییر ددادم..
    ولی وقتی پوش میفرستم..ب گوشی و تبلتم نمیاد..فقط ب ایمالیتوری(جنی ماشن) ک برنامه رو باهاش تست میکتم پوش میاد.
    ممنون میشم توضیح بدید دلیلش چ مواردی میتونه باشه؟
    پاسخ:
    راستش رو بخواید نمیدونم دلیلش چی میتونه باشه. من برای تمام برنامه های خودم دقیقاً از این روش که تو ویدئو توضیح داده شده استفاده می کنم و هیچوقت مشکلی نداشتم.
    تنها اختلافش این هست که این ورژن خاص از کتابخانه در ویدئو ازش استفاده شده و در اون زمان آخرین نسخه بود، یک باگ داشت که با کلیک روی نوتیفیکیشن برنامه کرش می کرد و برای حل مشکل چند خط کد به کلاس CustomParsePushBroadcastReceiver اضافه شده. که الان در نسخه های جدیدتر نیازی بهش نیست.

    من همیشه در جنی موشن API 9 و API 16 به بالا رو تست می کنم و گوشیم هم که آخرین نسخه ی اندروید رو داره همیشه، و همیشه هم پوش رو دریافت کردم.
    سلام
    سایت parse.com اصلا باز نمیشه. 
    پاسخ:
    سرویس پارس سال گذشته اعلام کرد که سرویسش رو دیگه توسعه نمیده و یکسال به توسعه دهنده‌گان فرصت داد تا کوچ کنند از این پلتفرم.
    و از ژانویه 2017 سرویسشون از دسترس خارج شده.

    اگر هدف Push Notification هست پیشنهاد می کنم از OneSignal استفاده کنید.

    ضمن اینکه کل سورس پلتفرم پارس هم در گیت‌هاب منتشر شده که می تونید در سرور خودتون راه اندازیش کنید.
    آدم میترسه فردا OneSignal  هم جمع کنه.
    راستی نظر شما در مورد pushe.co چی هست؟ به نظر شما کدوم بهتره؟

    پاسخ:
    اکثر سرویس های پوش از GCM استفاده می کنن، شما هم می تونید از GCM مستقیماً استفاده کنید و هیچ هزینه ای هم نداره، اما باید سروری تهیه کنید و کد نویسی هاش رو انجام بدید. به همین جهت این سرویس خیلی خوب و مفید هستن و کارتون رو راحت می کنن.

    بعد از جریان بسته شدن پارس، سرویس های زیادی با توسعه دهنده ها تماس گرفتن (از جمله خود من که چند ایمیل دریافت کردم و سرویسشون رو معرفی کردن) تا از سرویس اونها بعنوان جایگزین استفاده بشه.
    یکی از تعهداتی که OneSihnal داد و از اون بعنوان مزیت یاد می کرد، این بود که دستگاه ها در اکانت خودتون در گوگل رجیستر میشن، و اگر روزی OneSignal ازبین بره یا بخواین به یه سرویس دیگه کوچ کنید، لیست دستگاه ها رو بهتون میده و خیلی راحت میتونید به سرویس دیگه مهاجرت کنید. درواقع می‌گفت اتفاقی که الان با بسته شدن پارس براتون افتاده، هیچوقت در OneSignal براتون اتفاق نمی افته، حتی اگر OneSignal بسته بشه مثل پارس.

    در مورد پوشه اطلاعی ندارم که به چه روشی کار می کنن، اما از مستنداتشون بر میاد که دستگاه ها در اکانت خود پوشه رجیستر میشن که نتیحه ش این هست که اگر پوشه بسته بشه یا بخواید به سرویس دیگه کوچ کنید، کاربرها رو از دست میدید.  مثل اینکه امکان استفاده از اکانت خودتون در پوشه هم میسر هست: http://blog.pushe.co/1395/06/01/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%A7%D9%86%D8%A7%D9%84-%D8%A7%D8%AE%D8%AA%D8%B5%D8%A7%D8%B5%DB%8C-%DA%AF%D9%88%DA%AF%D9%84-%D8%AF%D8%B1-%D9%BE%D9%88%D8%B4%D9%87
    من در OneSignal ثبت نام کردم که میگه باید Server key را باید از firebase.google.com بگیرم. اونجا که رفتم یه قسمت داشت به نام Notification ، نمیشه از اینجا نوتیفیکیشن ها رو بفرستیم؟ راهنما هم برای اندروید استدیو داشت من چون از ایکلیپس استفاده می کنم سر در نیاوردم.
    پاسخ:
    چرا، خود Firebase هم سرویس ارسال پوش داره، اما OneSignal شخصی سازی های بیشتری انجام داده.

    بهتره اینجوری بگم که Firebase بهتون امکان ارسال پوش رو میده (نمایش نوتیفیکیشن آنچنان مهم نیست، خود ارسال پوش مهمه) و بصورت پیشفرض نوتیفیکیشن ساده رو هم نمایش میده، اما وان سیگنال روی نمایش نوتیفیکیشن بیشتر کار کرده و اگه حوصله کدنویسی برای نمایش نوتیفیکیشن رو ندارید، وان سیگنال بهتره.
    بسیار ممنونم بابت توضیحاتتون :)
    پاسخ:
    خواهش می کنم.

    در مورد امکان انتقال کاربران از پوشه بیشتر بررسی کردم و متوجه شدم که ممکن هست، پاسخ کامنت قبلی رو اصلاح کردم.
    با سلام و تشکر از مطالب مفیدتون .. میخواستم بدونم ایا امکانش هست در pushe ،
    جیسون فرستاده شده را در اکتیویتی به نمایش در آورد ..
    ممنون میشم راهنمایی کنید

    پاسخ:
    من با پوشه کار نکردم، اما در مستنداتشون ذکر شده که میشه JSON رو ارسال کرد و اون رو در Listenerی که در Manifest معرفی کردید دریافت کرد.
    پس از دریافتش می تونید به هر نحوی ازش استفاده کنید.
    ممنون از پاسختون ..راستش این چند روزه روش کار کردم و پیداش کردم ... فقط یه مشکلی دارم اینکه از پوشه جیسون ارسال و در یک اکتیویتی هم نمایش میدم (بدون کلیک کاربر روی نوتیفیکیشن) .
    سوالم اینه اگر بخوام نوتیفیکیشن ارسال کنم و با کلیک کاربر این عمل اتفاق بیفته چکار باید کنم؟
    این کد جیسونی هست که دارم از پوشه میگیرم
    http://uupload.ir/files/btm1_push.jpg
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی