ارسال الاشعارات لجميع مستخدمين التطبيق دون عملية تسجيل gcm – android

بسم الله الرحمن الرحيم

اليوم إن شاء الله رح نتعلم درس في كيفية ارسال اشعارات لجميع من يستخدم تطبيقك بواسطة سيرفر سحابة التراسل من جوجل gcm وهذا هو الدرس الرابع لنا في التعامل مع هذا السيرفر الضخم, ولنا دروس قادمة إن شاء الله فيه.

# راجع الدروس السابقة حول gcm :

  1. مقدمة لاستخدام GCM ببرمجة تطبيقات الاندرويد + تجهيزها
  2. ارسال الاشعارات في تطبيقات اندرويد برمجياً باستخدام GCM
  3. ارسال الاشعارات لاجهزة متعددة GCM – Android – PHP – MySQL

هذا الدرس هو نتيجة للدروس السابقة, فقد تعديل على ما سبق, وسوف نحتاج من الدروس السابقة :
Project Number + API Server Key

# معاينة لهذا الدرس :

# المتطلبات :

تطبيق الويب / تطبيق بلغة php بسيط ومتصل بقاعدة بيانات MySQL لتخزين معرفات الاجهزة المتصلة من ثم ارسال المعرف والرسالة إلى سيرفر سحابة جوجل GCM لأرسال الرسالة للمستخدم.

تطبيق اندرويد / في حال قام بتشغيله المستخدم لأول مرة يقوم بتخزين معرف له و يرسل هذا المعرف لقاعدة البيانات.

# تجهيز تطبيق الويب :

كما ذكرنا سابقاً في دروس سابقة يجب أن يكون لديك مزود خدمة ( استضافة ) من أجل أن تقوم بقرائة تطبيق الويب وقاعدة البيانات.

– تنشأ مجلد خاص للـ GCM وتضع فيه الملفات التالية :
db_connect.php
db_functions.php
insertuser.php
processmessage.php
send.php

– حسب موقعك او السيرفر الذي تستخدمه لا تنسى وضع مسار insertuser.php في تطبيق الاندرويد لإضافة المستخدم لقاعدة البيانات.

– كذلك في ملف processmessage.php لا تنسى بإن تقوم بوضع API Server Key حسب الموجود لديك في مشروعك في جوجل, وهذا ما اخذناه في الدرس الأول.

عموماً بالنسبة لي وفي هذا الدرس سوف أستخدم السيرفر الداخلي الاباتشي, ووضع مجلد داخله بإسم gcm و إنشاء قاعدة بيانات بإسم andrody ووضع فيها حقلين, الاول id وهو ترتيب فقط يضاف تلقائي للاجهزة الاول, الثاني .. إلخ, أما الحقل الآخر فهو لتخزين الاي دي المسجل للمستخدم.

# تابع معي الخطوات :

فتح السيرفر وإنشاء قاعدة بيانات بإسم andrody , اضف فيها الأمر التالي لاضافة الجدول وحقوله :

والآن فتح مجلدات السيرفر www و إضافة فيها مجلد بإسم gcm ومن ثم إضافة فيه الملفات التالية :

db_connect.php
لا تنسى بإن تقوم بتغيير معلومات الاتصال بالقاعدة كما لديك في السيرفر

db_functions.php

insertuser.php

processmessage.php
لا تنسى بتغيير API Server Key كما لديك في مشروعك في جوجل

send.php

هكذا نكون أنتهينا من تجهيز السيرفر, والآن لننتقل لتجهيز تطبيق الاندرويد.

# تجهيز تطبيق الاندرويد :

الملفات المطلوبة منك إنشائها :Push_notifications_all_users_application_without_registering_gcm_android_1

وقد تم شرحها في الدروس السابقة. وتقريباً نفسها تماماً لكن في هذا الدرس قمت باختصار أكواد كثيرة, ومع تستطيع الاختصار اكثر 🙂

 

 

 

نقوم بوضع الأكواد في الملفات السابقة كالتالي :

Home_Activity.java

Gcm_Application_Constants.java
لا تنسى بتغيير رقم المشروع هنا والرابط كذلك حسب ما موجود لديك

Gcm_Broadcast_Receiver.java

Gcm_Notification_Intent_Service.java

بالنسبة للمبتدئين ” لا تنسى بتغيير اسم الحزمة كما موجود لديك ” , كما إن سطور التعليقات واضحة وكثيرة استعن بها, وشرح الملفات قد ذكر سابقاً في دروس سابقة.

home.xml

أما بالنسبة لملف AndroidManifest.xml كذلك قد تم شرحه سابقاً, وهو كالتالي :
وهكذا نكون انتهينا من درس اليوم ,, كما أذكر أغلب الأكواد والملفات شرحت سابقاً ,, راجع الدروس السابقة في حال مواجهة أي مشكلة, وإذا لم تجد الحال تستطيع استخدام صندوق التعليقات بالأسفل لمساعدتك في حلها ..

بالنسبة لتطبيق الويب كما هو سابقاً ولكن هنا قد تم إضافة عدد المتصلين وهو عدد المضافين لقاعدة البيانات, وكذلك قمت بإخفاء العناصر المضافة وتحديدها بشكل تلقائي, في حال كان لديك خبرة بتطبيق الويب تستطيع تعديله كيف تريد وتظهر المضافين وتحديد لمن تريد الارسال لتحديد عدد معين ~

أختصرت درس اليوم لأن الأكواد مكررة معنا ولكن في كل درس يوجد هناك معلومات جديدة. أرجوا أن تكونوا قد استفدتم وانتظرونا في دروس جديدة وحصرية  .. والسلام عليكم 🙂

عن عبدالقادر عليوي

مواليد 1996 , سوري الجنسية, طالب علم, لدي شغوف كبير في تعلم كل ما يتعلق بالانترنت من تطوير وحماية, أحب القراءة كثيراً .. هدفي نشر العلم بشتى أنواعه ومجالاته, متابع من الدرجة الأولى لـ الدكتور ابراهيم الفقي و الشيخ أحمد ديدات - رحمهم الله -.

شاهد أيضاً

مشغل ملفات صوتية للاندرويد برمجياً اوف لاين RAW

بسم الله الرحمن الرحيم بالمشروع السابق, عرضنا لكم مشروع مشغل ملفات صوتية اون لاين بالكود …

26 تعليق

  1. اقترح اخي ان تقوم بإضافة سورس كود لكل تطبيق تقوم بعمل شرح عليه بصيغة zip لتعم الفائدة أكثر شكراً

    • تلقيت كثيراً هذا الاقتراح .. ولكن ما أريده هو أن تقوموا بكتابة الكود بنفسكم من أجل ان تعم الفائدة لكم ..
      كما إن مشروع الاندرويد ستوديو ملفاته كثيرة .. وأغلب الشروحات لا تتعدى 3 اكتفتي – 3 لياوت .. وهكذا أثقل عليكم مشروع كامل من اجلها فقط ..

      • لكن أخي احياناً يتعذر علينا تنفيذ خطوات بشكل صحيح وتحصل أخطاء معنا أثناء كتابة الكود ويحصل تعليق في كمبيوتر مما يدفعنا إلى توقف عن برمجة تطبيق. يرجى ان تقوم برفعه بملف zip وخصوصاً للمبتدئين مثلي عندها استطيع دراسة تطبيق بهدوء دون الخوف من عمل أخطاء.

        • حسناً إن شاء الله من الدروس القادمة سوف يكون هناك تحميل للاوبن سورس كذلك في اقرب وقت فراغ سوف يتم اضافة الاوبن سورس للمواضيع السابقة.

  2. اخى انا من متابع دروسك الجميله دى
    بس نفسى تعمل حاجتين
    الاول تشرح درس تعلمنا نصمم تطبيق فيه كذا زر
    وكل زر ليه خصائص معينه من ضمنها فتح صفحة نت جوه التطبيق

    ثانى حاجه انا دايخ قوى ومش عارف اعمل موضوع التنبيهات دى وبتطلعلى غلطات كتير
    يا ترى ايه اللى ناقصنى هل المفروض احمل حاجات من ال sdk

    ولا ايه بالظبط

    • ان شاء الله بالنسبة للدروس .. بإذن الله سوف اواصل هذا العمل .. لكن المشاريع تزداد عليي مع مرور الوقت ..

      بالنسبة للتحميلات من الـ sdk , يجب تحميل خدمات جوجل بلاي .. وتفعيلها في مشروعك ..

      راجع الدروس كاملة الخاصة بارسال الاشعارات .. وان شاء الله تجد جواباً لسؤالك 🙂

  3. كيف افعل خدمات جوجل بلاي

  4. great job thanks

  5. اخي أرجو منك المساعده , عندي أسبوع في نفس error 🙁

    07-30 18:02:54.897 3966-3996/com.andrody.testandrody E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1

  6. السلام عليك يا أخي عبد القادر شكرا على الإجابة, هاهي صورة من الخطأ
    http://www.hostingpics.net/viewer.php?id=404852Capture.png

  7. أظن أنه من الازم إضافة مكتبات jar إلى emulator مثل google play service و أيضا إضافة account google في emulator. المشكل أني لم أستطع تحديد هذه المكتبات. أتمنى شرحا مفصل و جزاك الله خيرا ـ نزار من تونس

  8. شكرا أخي أرجو أني لم أزعجك بأسئلتي، للأسف مازال موجود نفس error
    أريد أن أريك طريقة عملي و أنت قل لي هل أنا في الطريق الصحيح أم لا:
    1: أضيف ملفات apk لل emulator لكي أستطيع أن أرى مشروعي و هم كلآتي :
    com.google.android.gms-6.1.11+(1474901-038).apk
    GoogleLoginService.apk
    GoogleServicesFramework.apk
    Phonesky.apk

    2: أضيف account google لل emulator

    3: أستعمل هذا code في Gcm_Application_Constants.java :
    “static final String APP_SERVER_URL = “http://10.0.2.2:2356/gcm/insertuser.php
    هل 10.0.2.2 adress IP for emulator صحيحة أم لا

    أنتظر إجابتك أخي بفارغ الصبرأنا أعمل على gcm لأكثر من أسبوع، جربت العديد من الطرق و لم أفلح 🙁 و أرجو أن تكون إجابتك هي الحل و شكر

    • العفو , بالعكس اهلا وسهلا بك وارحب بجميع اسئلتك واستفساراتك 🙂

      وجود نفس الخطأ , فأعتقد انك لم تتبع الدرس هذا بشرح مفصل من بدايته لنهايته ~

      اخي الفاضل المحاكي لا يدعم خدمات جوجل بلاي لذلك لن يفيدك, وهذه الملفات ليس لها اي علاقة بالدرس , لذلك قم بعمل APK وتجربته على جوالك, او اعمل معاينة مباشرة من اندرويد ستوديو لجوالك.

      بالنسبة لـ : 10.0.2.2 فهو حسب السيرفر لديك .. واعتقد فيه خطأ تأكد من اي بي جهازك من السيرفر الداخلي .. او رابط موقعك ..

  9. شكرا لقد أحببت هذا لموقع لدروسكم الجيدة ، لإجاباتك السريعة و حسن أخلاقك
    جازاك الله خيرا 🙂

  10. الله يعطيك الف عافية يارب
    بس سؤال الخدمة محظورة بسوريا مافيني طبقها صح ؟

    • ربي يعاقيك خي ..

      هلأ انا خارج سوريا .. بس دخلت بنقاش مع ناس جوات سورية, النتيجة انو بتشتغل بسورية لأنو

      خدمات جوجل بتتفعل عن طريق مكاتب معينة , فإذا انتا وقت تدخل تطبيقات وتشوف اعلانات جوجل ظاهرة الك معناتو شغالة ..

      والله اعلم .

  11. هل ممكن مساعدة

  12. اوجه مشكلة
    Error:(98, 48) error: is not abstract and does not override abstract method onFailure(int,Header[],byte[],Throwable) in AsyncHttpResponseHandler

  13. جزاك الله خير الجزاء ، حاولت كثيراً ولن لا يعمل التطبيق بالشكل المطلوب حيث انه لا يظهر أي مستخدمين في قاعدة البيانات و لا أعلم أين ممكن يكون الخطأ .. !

    شكراً لك

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

9 + 1 =