بسم الله الرحمن الرحيم
اليوم إن شاء الله رح نتعلم من هي التدوينة, كيفية إضافة الإشعارات في تطبيقات الاندرويد برمجياً عن طريق استخدام موقع وسيط, وإسمه Parse
موقع جداً مشهور في خدماته التي يقدمها للمبرمجين, ولكن في درس اليوم سوف نتعلم فقط استخدام الاشعارات في تطبيقاتنا, وارسال الاشعارات من لوحة التحكم.
في البداية صديقي قم بالدخول إلى الموقع, بالضغط على https://parse.com/ .
ثم في أعلى الشاشة أضغط على زر التسجيل signup, وضع المعلومات الخاصة بك, وتم التسجيل. بعد تسجيل الدخول, اذهب إلى صفحة التطبيقات https://www.parse.com/apps .
واضغط على إنشاء تطبيق Create a new App , أو اختر تطبيقك إن كنت إضفت تطبيق مسبقاً. بعد الدخول للتطبيق إضغط على push من القائمة أعلى الشاشة.
سوف تظهر لك رسالة : No push notifications to display yet, في الجهة اليسرى أعلى الشاشة يوجد زر اسمه + Send a push اضغط عليه لإرسال إشعار, سوف تظهر لك رسالة No registered devices .
أي لا يوجد أجهزة مسجلة مسبقاً, إضغط على الزر وسط الشاشة Push Quick Start , سوف تظهر لك رسالة Select an environment لاختيار المنصة الخاصة بتطبيقك, اختر منها Android.
ثم اختر لغة البرمجة Native Java , ثم اختر Existing project .
سوف تظهر لك صفحة لإعداد الـ SDK الخاصة بالموقع داخل تطبيقك الأندرويد, خطوات مرتبة من البداية, إذا كنت من مستخدمين برنامج اكليبس فـ قم بتحميل الـ SDK > Download the SDK . بعد التحميل قم بفك الضغط ونقل كلاً من : bolts-android-*.jar و Parse-*.jar إلى مجلد “libs” في مشروعك.
أما فـمستخدمين برنامج الأندرويد ستوديو فهم مميزون $: لا تقم بتحميل إي شيء فقط قم بالذهاب إلى ملف build.gradle وإضف بداخله في قسم dependencies السطرين هذه :
compile 'com.parse.bolts:bolts-android:*' compile 'com.parse:parse-android:*'
المقصود بـ * هو آخر إصدار متوفر …
و الآن نتابع لكلا البرنامجين, والآن إذا كان لديك في تطبيقك كلاس ابلكيشن قم بإضة الكود البرمجي التالي في بدايته, وإذا لم تفهم قصدي ولم يكن لديك, قم بإنشاء كلاس جديد في مشروعك
وقم بتسميته إي اسم, مثال AndRody.java , وقم بإضافة الكود الموجود لديك في صفحة الإعداد, وهو لتمرير قيمة او المعرف الخاص بالتطبيقك, ومفتاح او رمز العميل.
ليصبح بالشكل التالي :
public class AndRody extends Application { public void onCreate() { Parse.initialize(this, "7P8iTbq8r5e0yw8aY6n5Xhq84UbsWsiufRkyI2R2", "8pc3hMwkHorktZoyWDwONie8gl9oG0Ct2BjaWNik"); ParseInstallation.getCurrentInstallation().saveInBackground(); } }
لاحظ إنه extends Application . طبعاً ضع الكود الذي لديك, فهذا الكود الخاص بتطبيقي التجريبي لهذا الدرس.
ثم نقوم بالذهاب إلى ملف AndroidManifest.xml, لنضيف الصلاحيات المطلوبة :
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- لا تنسى قم بتغيير com.andrody.test إلى اسم الباكيج الخاص بك --> <permission android:protectionLevel="signature" android:name="com.andrody.test.permission.C2D_MESSAGE" /> <uses-permission android:name="com.andrody.test.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- لا تنسى قم بتغيير com.andrody.test إلى اسم الباكيج الخاص بك --> <permission android:protectionLevel="signature" android:name="com.andrody.test.permission.C2D_MESSAGE" /> <uses-permission android:name="com.andrody.test.permission.C2D_MESSAGE" />
كذلك في نفس المعرف لنقم بتعريف الاكتفتي الخاصة بالحزمة وهي : يتم وضعها داخل اوسمة <application> أي اسفل الاكتفتي لديك.
<service android:name="com.parse.PushService" /> <receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver> <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <!-- لا تنسى قم بتغيير com.andrody.test إلى اسم الباكيج الخاص بك --> <category android:name="com.andrody.test" /> </intent-filter> </receiver>
<service android:name="com.parse.PushService" /> <receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver> <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <!-- لا تنسى قم بتغيير com.andrody.test إلى اسم الباكيج الخاص بك --> <category android:name="com.andrody.test" /> </intent-filter> </receiver>
كذلك في نفس الملف لا تنسى إضافة الكلاس الجديد الذي قمنا بإنشائه AndRody.com وتتم إضافته من خلال تعريفه مباشرة داخل وسم ابليكيشن,بالشكل التالي :
<application android:name=".AndRody"
ليصبح الناتج النهائي بهذا الشكل : ( مع مراعاة انني استخدم مشروع فارغ تجريبي لا يحتوي سوا اكتفتي رئيسية واحدة ).
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.andrody.test" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- لا تنسى قم بتغيير com.andrody.test إلى اسم الباكيج الخاص بك --> <permission android:protectionLevel="signature" android:name="com.andrody.test.permission.C2D_MESSAGE" /> <uses-permission android:name="com.andrody.test.permission.C2D_MESSAGE" /> <application android:name=".AndRody" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.parse.PushService" /> <receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver> <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <!-- لا تنسى قم بتغيير com.andrody.test إلى اسم الباكيج الخاص بك --> <category android:name="com.andrody.test" /> </intent-filter> </receiver> </application> </manifest>
بعد الانتهاء من المطلوب في أسفل صفحة الإعداد يوجد : Test the SDK اضغط على زر test , وإن كان لديك اخطاء بعملية التركيب سوف يخبرك بذلك, وإذا تم نجاح الأمر بشكل سليم,
سوف تخرج لك رسالة : Congrats! You sent your first push notification. بالإضافة إلى وصول رسالة إشعار إلى جهازك.
بعد ذلك تستطيع الدخول إلى لوحة التحكم وارسال الإشعارات بنفس الطريقة, فقط القيام بالدخول للموقع والضغط على تطبيقك, من ثم ارسال اشعار وتختار هل تريد ارسال اشعارات لجميع المنصات
لهذا التطبيق, او فقط منصة اندرويد ولجميع الاشخاص أو لا .. يوجد خيارات متعددة اكتشفها بنفسك ….
ملاحظة : يوجد استخدامات متعددة لهذه الحزمة ولمنصات مختلفة, بالإضافة إلى يوجد العديد من طرق التركيب, ولو لاحظتم إن طريقة التركيب مختلفة في الموقع, ولكن حاولت إن استخدم اسهل طريقة
لأنني هنا من أجل تسهيل عليكم هذا المجال.
اتمنى لكم التوفيق جميعاً,, و السلام عليكم 🙂
استمر يا اخي احسنت