مشکل در ارسال نوتیفیکیشن تبلیغاتی با استفاده از پارس/parse.com (رفع شد + کارکرد 100% بدون مشکل) + سو ...
دوستان و همکاران سلام،
قصد دارم روی یکی از اپلیکیشنام نوتفیفکشن آنلاین راه اندازی کنم و پارس رو انتخاب کردم.
ولی یه مشکلی که هست اینه که کدها و متدهای مختلف برای ثبت دستگاه داره و هر کدوم یه جور مشکل دارن.
از جمله مشکلات من که چندین جا دیدم به فارسی و انگلیسی مطرح شده:
- نوتیفیکیشن فقط به ایمولاتور ارسال می شه و توسط دستگاه حقیقی قابل دریافت نیست (که البته من این مشکل رو رفع کردم)
کد رفع ایراد برای این قسمت:
protected void onCreate(Bundle savedInstanceState) {
Parse.initialize(this, "appkey", "clientkey");
PushService.setDefaultPushCallback(this, MainActivity.class);
ParseInstallation.getCurrentInstallation().saveInBackground();
ParseAnalytics.trackAppOpened(getIntent());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- بعد از رفع این مشکل دو مشکل جدید به وجود اومد:
1 - عدم دریافت نوتیفیکیشن بعد از قفل و باز شدن دستگاه
2 - کرش کردن زمانی که برنامه رو بستیم و رفتیم، بعد برگشتیم و وای فای رو روشن می کنیم... (مشخصه که از رسیوره)
ممنون میشم یک کد بدون مشکل رو ارائه بدید...
برای حل مشکل کرش کردن برنامه در هنگام استفاده از سیستم parse برای نوتیفیکیشن کاری که میگم رو انجام بدین مشکلتون 100% برطرف میشه !
کدی که برای initialize کردن هست یعنی کد زیر یک ورودی context داره که شما این کد رو توی اکتیویتیتون گذاشتین احتمالا و this رو بهش پاس دادین اما این context که به عنوان ورودی میگیره باید از نوع application باشه تا برنامه کرش نکنه :
Parse.initialize(this,"appkey","clientkey");
میتونین یه کلاس بسازین که از application اکستند کنه و این متد رو اونجا استفاده کنین و parse رو اونجا initialize کنین بقیش تو اکتیویتیتون باشه
مثلا اینجوری :
public class MyApplication extends Application {
@Override
public void onCreate() {
Parse.initialize(this,"appkey","clientkey");
}
}
امیدوارم تونسته باشم کمکتون کنم بازم اگه مشکل حل نشد بگین تا باهم برطرفش کنیم ، من خیلی وقته از parse استفاده میکنم و واسه راه انداختنش خداییش خیلیییییی گیر کردم اما الان هیچ مشکلی نداره و عالی کار میکنه
با تشکر فراوان از دوست خوبمون کیا ( Psycho )
کسایی که با پارس کار کرده باشن می دونن من چی میگم، با هر مدل جستجویی که انجام بدید شما بیش از 5 نوع کد و متد برای ثبت دستگاه در سرور پارس پیدا می کنید که هرکدوم یه مشکلی دارن متاسفانه!
بازهم ممنون از آقای کیا واقعا برای من شخصا خیلی ارزشمند بود...
خب، دوستانی که می خوان از این سرویس استفاده کنن چند مورد رو که برای خودم مهمه اینجا آموزش میدم، امیدوارم به دردشون بخوره.
محدودیت در تعداد ارسال نوتفیفکیشن پارس
ارسال نوتیفیکشن توسط پارسه به دفعات نامحدود در ماه برای یک میلیون دستگاه ثبت شده، کاملا رایگان می باشد. اگر بیش از یک میلیون دستگاه در سیستم شما ثبت شده باشد بابت هر 1000 نفر بایستی $0.05 تقبل کنید. اطلاعات بیشتر
ارسال نوتفیفکیشن لینک دار توسط پارس
برای ارسال این نوع نوتفیفکیشن، گزینه JSON رو انتخاب کنید و از کدهای زیر استفاده نمایید؛
- باز کردن یک برنامه در بازار به صورت مستقیم:
{"alert" :"App Summary",
"title":"App Name",
"uri":"bazaar://details?id=com.example.name"}
- باز کردن لینک در مرورگر:
{"alert" :"Website Summary",
"title":"Site/Title Name",
"uri":"http://cafebazaar.ir"}
راه اندازی سرویس پارس در برنامه
از هیچکدوم از کد/متد های سایت پارس استفاده نکنید!
یک application extends به نام MainApplication در پکیجتون بسازید و کد زیر رو اونجا قرار بدید، کد مشتری و اپ رو هم که مشخصه از سایت پارس بگیرید و جایگزین کنید. نسخه جدید کتابخانه Parse رو هم در پوشه libs بگنجانید.
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this, "App Key", "Client Key");
ParseInstallation.getCurrentInstallation().saveInBackground();
}
}
فایل AndroidManifest.xml رو باز کنید و تگ <application رو پیدا کنید و خط زیر رو بهش اضافه کنید:
android:name="com.example.name.MainApplication"
هیـــــچ، تاکید می کنیم هیچ کد اضافی در اکتیویتی Mainتون نیاز نیست.
موفق باشید...
سلام !!! خیلی ممنون بابت راهنمایی هاتون
ولی ظاهرا طلسم من نمیخواد شکسته شه
من دقیقا کارایی که گفته بودین رو انجام دادم ولی وضع بدتر هم شد !!!
یعنی من وقتی درون برنامم و push میفرستم ، کرش میکنه !!!
قبلا حداقل وقتی تو برنامه بودم درست کار میکرد !!!! D-:
پارس به دستگاه میرسه ولی ظاهرا کامپایل نمیشه و کرش میکنه...!!!!
در مانیفست به این صورت تعریف کردم
<activity
android:name=".MyApplication"
android:label="@string/app_name" >
</activity>
سورس راه اندازی نوتفیفکیشن پارس (آپدیت شد)
اگر در برنامه تان از این سورس استفاده کردید و موفق بود حتما لینک برنامتون رو اینجا قرار بدید، ممنون و موفق باشید.
برا من که اصلا برنامه ران نمیشه!
ران تایم ارور میده باز خوبه برا شما ران میشه
دقیقا هم همین کار ها رو انجام دادم :(
اصلا باورم نمیشه که کار کرد !!!!!
از دقیه اول که پست رو اپدیت کردین هزار بار این برنامه رو تست کردم و همه جوره بهم جواب داد !!!!!
آقا محسن دمت گرم !!!!
راستی برای اطمینان هم این کد رو تو کلاس MainApplication اضافه کردم که دیگه جایی برای ایراد نباشه !!!!
ParseInstallation.getCurrentInstallation().saveInBackground();
اینم ی کدی که میتونه لوگوی pushnotification هاتونو تغییر بده که این خط باید قبل از بسته شدن تگ Application درون مانیفست قرار بگیره !!!... ( برای تغییر ادرس لوگو ، ابتدا لوگو رو در پوشه res>drawable بریزید سپس به جای push_icons ، نام لوگوتونو وارد کنید )
<meta-data android:name="com.parse.push.notification_icon" android:resource="@drawable/push_icon"/>
خب ....
سورس برای اندروید استادیو ( با طراحی متریال )
دوستان این سورس ها کامله یعنی همه دسترسی ها و رسیور ها داده شده و با نام پکیج برنامه ست شده ، هم کلید مشتری و کلید برنامه رو به صورته حقیقی وارد کردم که برنامه الکی به این دلیل کرش نکنه
پس این سورس رو مستقیم کامپایل کنید ، اگه برنامه کرش کرد ، اون موقع یعنی مشکل از ابزار برنامه نویسیتونه
اگه اجرا کرد که این سورس رو با پروژه قبلیتون مطابقت بدین ببینین به قول معروف کجارو سوتی دادین D:
موفق باشید !!!!
من نمی دونم نصب پارس چه مشکلی داره. خود پارس کدهارو آماده قرار داده و فقط باید جایگزین کنید. رو امولیتور هم اجرا نمی شه و باید برنامه رو گوشی داشته باشید تا تست درست انجام بشه. من فقط مشکل دوستمون رو دارم که برنامه به خودی کرش می کنه هی
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
