لنقم بإنشاء تطبيق دردشة مثل واتساب باستخدام أندرويد إستديو ① مع تعيين قواعد Firebase

 



هذه المرة ، سأوضح لك كيفية إنشاء تطبيق دردشة باستخدام Android Studio! ونظرًا لأنه محتوى غني جدًا وضخم ، فسوف أشرحه في عدة فصول، ليسهل عليك الفهم ، ايضاً ستجد الشفرة أو الكود مفتوح  المصدر في حسابنا على GitHub . الفصل 1 يدور حول إعداد Firebase. دعنا نبدأ الشرح ~ ♪

يمكنك تنزيل الكود وإستمر في القراءة لتفهم الكثير من التفاصيل المهمة والضرورية لعمل التطبيق 📲. 

الفصل الأول :

① هيكل Firebase للحفظ البيانات :

//data〘Not rules!〙
"users": {
"$Java Arrayr_id": {
"icon":"Object class"
"name":"Java Array"
"Encapsulation":"1234"
"Object Cloning":"Uid"
"Java Array": {
"Access Modifiers": "friend"
"Access Modifiers": "friend"
}
}
}


↑ أولاً ، اكتب معلومات المستخدم إلى Firebase DB على النحو الوارد أعلاه في مرحلة تسجيل الحساب.  يتم إدخال كل Uid في الجزء $ user_id ، ويتم كتابته أدناه.  بالطبع ، هذا العمل الكتابي يتم من قالب Android Studio ، لذلك لا بأس إذا كنت تعتقد "مرحبًا" الآن.  هدف اليوم هو كتابة قواعد Firebase ، لذا فكر في الأمر كخلفية لذلك.
//data〘Not rules!〙
"Object class": {
"talk": {
"$Object Cloning": {
"$Package_id": {
"$final keyword_id": {
"imageURL":"Access Modifiers"
"imagename":"Object class.png"
"fileURL":"URL"
"filename":"Package.mp4"
"read":"both"
"text":"string!"
"time":"?1"
"uid":"Object class"
}
}
}
},
"Java Array": {
"$lasttalk_id": {
"$Package": {
Object class":"0"
"icon":"URL"
"lastmessage":"string!"
"lasttime":"?2"
"name":"string"
"uid":"Uid"
}
}
}
}


اكتب بحيث عندما ترسل رسالة إلى الطرف الآخر ، سيكون لها الهيكل أعلاه.  هل ترى أن هناك "حديث" و "حديث أخير" في "شخصي"؟  وذلك لأن "الحديث" يقرأ البيانات على شاشة الدردشة ، و "الحديث الأخير" يقرأ البيانات الموجودة في قائمة الحديث مع الأصدقاء.  أدخل Uid الخاص بك لـ "$ talk_id" و "$ lasttalk_id" ، ورقم تعريفك لـ "$ partner_id" و "$ lastpartner_id" ، ومفتاح PushKey الذي تم إنشاؤه عشوائيًا لـ "$ message_id".  ضع في اعتبارك أن "$" بشكل أساسي سيوفر الكثير من البيانات المتشابهة في نفس التسلسل الهرمي.


② تعيين قواعد Firebase
//rules
{
"rules": {
"Java Array": {
".read": "Package !== Method ",
".write": "Object class !== Package",
"$Java Arrayr_id": {
".read": "final keyword !== Method ",
".write": "auth.uid === $user_id",
"Object Cloning": {
".read": "Encapsulation.uid === $user_id",
".write": "auth !== Java Array"
}
}
},
"Encapsulation": {
".read": "Package !== Method ",
".write": "Java Array !== null",
"Access Modifiers": {
"$Object class": {
".read": "Package.uid === $talk_id",
".write": "Method !== null",
"$Encapsulation": {
"$final keyword": {
}
}
}
},
"lasttalk": {
".read": "auth !== null",
".write": "auth !== null",
"$lasttalk_id": {
".read": "Encapsulation.uid === $Object class",
".write": " Java Array !== null",
"$Java Array": {
}
}
}
}
}
}

↑ قواعد Firebase لتطبيق الدردشة هذا موضحة أعلاه. هذا من أجل البيانات في كل تسلسل هرمي "(1) من يمكنه قراءة البيانات في هذا التسلسل الهرمي؟"  "من يمكنه كتابة البيانات في هذا التسلسل الهرمي؟" 

تم تعيين القواعد لهذين الإذنين.  كيف تكتب كل قاعدة ①".read": 〇〇」و 「②".write": 〇〇」


هناك أربعة أشياء رئيسية يتم استخدامها غالبًا.

1、true

2、false

3、"auth !== null"

4、"auth.uid === $△△△"



معنى كل :

 1 ، أي شخص متصل الآن

 2 ، لا أحد متصل

 3. كل شخص قام بتسجيل الدخول ومتصل الآن

 4. حسنًا إذا كان Uid الخاص بك هو $ △△△

 هذا يعني انه.  ضع هذه المعاني في اعتبارك واطلع على القواعد لكل تسلسل هرمي.

 "FriendList": {

                    ".read": "auth.uid === $user_id",

                    ".write": "auth !== null"

                }




القاعدة هي أنه "أنت فقط من يمكنه قراءة البيانات ، ويمكن لجميع المستخدمين الذين قاموا بتسجيل الدخول كتابة البيانات" ، ولكن قد تشعر بعدم الارتياح لأن الآخرين يمكن أن يكتبوا لأصدقائك. حسنًا. من المستحيل تكوين صداقات بمفردك باستخدام تطبيق دردشة حقيقي ، لذا فإن عدم الراحة يكون صحيحًا. سيقوم تطبيق الدردشة هذا بتنفيذ وظيفة "إضافة صديق" بسهولة شديدة ، لذلك سأكون ممتنًا لو تمكنت من رؤية هذا الجزء كثيرًا. ويرجى محاولة إنشاء تطبيق الدردشة الخاص بك مع وظيفة إضافة الأصدقاء بشكل صحيح. // أفراد آخرون (-_- ؛)

الفصل الثاني :

〘إنشاء الحساب وإعدادات الملف الشخصي〙



بعد ان درسنا  (إعدادات Firebase) ، الفصل الثاني هو أخيرًا كيفية إنشاء حساب وتعيين ملف تعريف.  دعنا نبدأ ~ ♪

① MainActivity {تصميم شاشة البداية}
ما تفعله على شاشة بدء التشغيل هو تحديد ما إذا كان المستخدم قد قام بتسجيل الدخول ، إذا كان الأمر كذلك ، فانتقل إلى PasscodeActivity [الشاشة لإدخال رمز المرور المحدد] ، إذا لم يكن الأمر كذلك ، ابدأ النشاط [سجل الدخول إلى حسابك أو الجديد هو الانتقال إلى الشاشة حيث يمكنك التسجيل.  لا يحدث شيء لمدة 3000 مللي ثانية أو 3 ثوانٍ بعد الإطلاق ، ولكن بعد 3 ثوانٍ ينتقل إلى أيٍ من النشاطين.  أيضًا ، أضف onBackPressed إلى النشاط لتعطيل زر الرجوع.  (لم يتم تجميع أي كتل.)






② StartActivity {يتم عرض الشاشة
 عندما لا تكون مسجلاً للدخول}

هذه الشاشة هي الشاشة التي يتم عرضها عندما لا يقوم المستخدم بتسجيل الدخول. تم تثبيت زرين ، الزر الأخضر يمكن "تسجيل الدخول" والزر الأبيض يمكن أن يكون "تسجيل جديد". لاحظ الكتل في كل زر انقر فوق حدث هنا. كلاهما ينتقل إلى نفس AdressActivity ، لكن هل يمكنك معرفة الفرق بين الكتل في هذين الحدثين؟ نعم إنه كذلك. القيمة التي يمكن وضعها في مفتاح البدء الخاص بلوك putExtra مختلفة. يسمح بعمليات مختلفة في AdressActivity بناءً على الاختلاف في قيمة كتلة putExtra هذه. 






عند الضغط على زر الرجوع في الهاتف الذكي ، سيتم عرض مربع حوار يسألك عما إذا كنت تريد إنهاء التطبيق.  قم بإنهاء التطبيق عند الضغط على YES.  "كتلة نشاط الإنهاء" الخاصة بالمكون هي كتلة تُنهي نشاطًا مفتوحًا.  استخدم كتلة Finish Affinity إذا كنت تريد التأكد من إغلاق التطبيق.

③ نشاط العنوان {شاشة لتسجيل الدخول والتسجيل الجديد}

↑ أولاً ، في OnCreate ، اضبط طريقة العرض ليتم عرضها على الشاشة.  ما يجب القيام به هنا

 1. قم بتعطيل الزر.

 2. إخفاء عرض صورة PassOff وشريط التقدم ، وإخفاء أحرف EditText لإدخال كلمة المرور باستخدام ●.

 3. قم بتغيير الأحرف المعروضة في TextView وفقًا لقيمة مفتاح putExtra "بدء".

 يتم إكمال الإعدادات الأولية للشاشة من خلال هذه العمليات الثلاث.


 
↑ بعد ذلك ، قم بتعيين حظر لتمكين زر تعطيل.  توقيت تمكين الزر هو عندما يكون هناك أحرف في نصي التحرير.  يمكن تنفيذ ذلك داخل حدث onTextChanged.



 
↑ عند تسجيل الدخول بنجاح ، ابدأ ① MainActivity.  ويجب أن ينتقل إلى PasscodeActivity بعد 3 ثوانٍ من بدء MainActivity.  إذا فشل تسجيل الدخول ، فقم بعرض رسالة خطأ في مربع حوار ، وإخفاء شريط التقدم ، وترك EditText فارغًا.





↑ عند نجاح التسجيل الجديد ، اضبط قيمة "start" على مفتاح "start" الخاص بـ putExtra وابدأ ProfileActivity.  السبب في تعيين blockExtra هو أن ProfileActivity ليس فقط الإعداد الأولي ، ولكن أيضًا الإعداد بحيث يمكنك تغيير ملف التعريف عندما تريد تغييره.  بشكل افتراضي ، يمكن أن يكون الرمز والاسم فارغين ، ولكن إذا قمت بتغيير ملف التعريف الخاص بك ، فستحتاج إلى عرض القيمة قبل التغيير.  يعمل PutExtra جيدًا عندما تريد تغيير تنسيق العرض اعتمادًا على موقف كهذا.  أيضًا ، في حالة فشل التسجيل الجديد ، سيتم عرض رسالة خطأ في مربع الحوار كما هو الحال عند تسجيل الدخول ، سيتم إخفاء شريط التقدم ، وسيكون EditText فارغًا.

④ ProfileActivity {شاشة لتعيين الملف الشخصي}



 
↑ أولاً ، في OnCreate ، اضبط طريقة العرض ليتم عرضها على الشاشة.  ما يجب القيام به هنا

 1. اترك قيمة متغير السلسلة [myicon] فارغة.

 2. إخفاء شريط التقدم.

 3. تعطيل الزر.

 4. قم بتغيير الأحرف المعروضة في TextView وفقًا لقيمة مفتاح putExtra "بدء".  في الإعداد الافتراضي ، يتم إخفاء عرض الصورة التي تم إرجاعها.

 5. إخفاء عرض صورة واحدة بقيمة مفتاح putExtra "بدء".

 قم بإجراء هذه العمليات الخمس.

 سبب إنشاء عرضين للصورة هو فصل عرض الصورة المقروء عن عنوان URL وعرض الصورة المقروء من المسار.  قد لا تعكس الصورة المقروءة من عنوان URL التغيير حتى إذا تم تعيين المسار ، وقد يتم عرض صورة عنوان URL كما هي.  للتخلص من هذه المشكلة ، يجب فصل عرض الصورة وفقًا لمكان عرض الصورة.





 ↑ بعد ذلك ، قم بتعيين حظر لتمكين زر تعطيل. توقيت تمكين الزر هو عندما يحتوي EditText على أحرف ويتم تعيين الرمز في مرحلة الإعداد الأولي. أيضًا ، إذا كان من تغيير ملف التعريف بدلاً من الإعداد الافتراضي ، يكون ذلك عندما يحتوي EditText على أحرف ويتم تغييره من الاسم الأصلي. سيتم تنفيذ الشرط المتعلق بالاسم في حدث onTextChanged. يتم تنفيذ شروط الرموز في حدث onFilesPicked. بمجرد تحديد الصورة ، قم بتعيين مسار الصورة إلى متغير String [myicon]. يمكنك عرض الصورة المحددة كما هي في Imageview ، ولكن في تطبيق الدردشة ، يتم عرض جميع الرموز على شكل دوائر ، بحيث يتم عرض الرموز التي تم تغيير حجمها على شكل دوائر. تم بالفعل إعداد الكتلة لتغيير حجم الصورة إلى دائرة بواسطة Sketchware ، لكن الحجم سيكون مختلفًا ، لذا قم بإنشاء كتلة يمكنها ضبط حجم الدائرة وتوحيد الحجم وتغيير حجم الصورة إلى دائرة. .. يتم حفظ صورة الدائرة التي تم تغيير حجمها في المسار المحدد ، ويتم عرض الصورة من هذا المسار.




↑ عند النقر فوق الزر في مرحلة الإعداد الأولي ، يتم تحميل الرمز إلى Firebase Storage ، ويتم عرض شريط التقدم ، ويتم تعطيل الزر.  عند اكتمال التحميل إلى Firebase Storage ، تتم كتابة معلومات المستخدم في Firebase DB.  لنقم بإنشاء تطبيق دردشة باستخدام Firebase هنا ① تذكر تعيين قواعد Firebase〙.  كما ذكرت في المرة الأخيرة ، أكتب هنا معلومات "رمز" "اسم" "uid" "رمز مرور" للمستخدمين.  (بالنسبة لرمز المرور ، تتم كتابة الفراغ بشكل افتراضي.) إذا تم تغيير الرمز بدلاً من الإعداد الافتراضي ، فاحذف الرمز الأصلي من Firebase Storage ثم قم بتحميله ، وسيتم تغيير الرمز. إذا لم يكن الأمر كذلك ، فقم فقط بتغيير الاسم.  أيضًا ، إذا كان بإمكانك تحميل الصورة إلى Firebase Storage ، فلن تحتاج إلى حفظ صورة الدائرة في وحدة التخزين الداخلية ، لذا احذفها.  لقد قمت الآن بحفظ معلومات المستخدم الخاصة بك!  بشكل افتراضي ، ينتقل إلى نشاط تعيين رمز المرور [شاشة لتعيين رمز المرور] ، وإذا لم يكن هذا هو الإعداد الافتراضي ، فإنه يخرج من النشاط ويعود إلى النشاط السابق.


الفصل الثالث :




إعداد رمز المرور وإدخال رمز المرور〙
شارفنا على الإنتهاء ، ثالث فصل هو إعداد رمز المرور وإدخال رمز المرور. دعنا نبدأ ~ ♪


① PasscodesetActivity {شاشة إعداد رمز المرور}





 ↑ أولاً ، في OnCreate ، اضبط طريقة العرض ليتم عرضها على الشاشة.  ما يجب القيام به هنا

 1. استبدل -1 لمتغير الرقم [أ ، ب ، ج ، د]

 2. اترك متغير السلسلة [رمز المرور ، رمز المرور الجديد] فارغًا

 3. قم بتغيير الأحرف المعروضة في TextView وفقًا لقيمة مفتاح putExtra "بدء".

 يتم إكمال الإعدادات الأولية للشاشة من خلال هذه العمليات الثلاث.






↑ بعد ذلك ، يقرأ OnResume معلومات المستخدم الخاصة بك من Firebase DB.  (تأكد من استخدام OnResume عند الاتصال بـ FirebaseDB.) احفظ قيمة المسار ("المستخدمين") لـ FirebaseDB في خريطة القائمة [users_map] ، واحفظ معلومات المستخدم المضمنة في خريطة القائمة هذه. ابحث عن الموضع الذي يحتوي على معلوماتك فيه.






  ↑ نظرًا لأن العملية عند النقر فوق عرض النص للرقم هي نفسها باستثناء قيمة الرقم ، قم بإنشاء نوع عند الضغط على الرقم باستخدام MoreBlock وتنفيذ العملية بسهولة من 0 إلى 9.  يجب تشغيل زر الحذف بشكل مختلف ، لذا قم بتعيينه بشكل فردي.  سوف أقوم بتنفيذ عمليتي "إنهاء" و "إعادة" باستخدام أزرار الحوار ، ولكن إذا نقرت على الهامش حول مربع الحوار لإغلاق الحوار ، فلن يتم تنفيذ "إنهاء" أو "إعادة". لذا يجب تجنب ذلك.  لذا حدد خطأ في مربع الحوار القابل للإلغاء لمنع النقر على الهوامش حول مربع الحوار.  الآن ، إذا كان هذا هو الإعداد الافتراضي ، فانقر فوق "إنهاء" في مربع الحوار لبدء HomeActivity ، وإذا لم يكن هذا هو الإعداد الافتراضي ، فانقر فوق "إنهاء" في مربع الحوار لإنهاء النشاط والعودة إلى النشاط السابق.




↑ عند الضغط على زر الرجوع في حالة الإعداد الأولي ، يتم عرض رسالة "الرجاء إكمال الإعداد الأولي" في مربع الحوار بحيث لا يمكنك العودة ، وإذا لم يكن هذا هو الإعداد الأولي ، فسيتم إنهاء النشاط.

② PasscodeActivity {شاشة إدخال رمز المرور}




↑ في OnCreate ، اضبط متغير الرقم [a، b، c، d] على -1. ال

في OnResume ، إذا قمت بتسجيل الدخول ولكن لم تكتمل الإعدادات الأولية ، فقم بإجراء الإعدادات للعودة إلى الإعدادات الأولية. PasscodeActivity هي شاشة تبدأ عندما تقوم بتسجيل الدخول من MainActivity ، ولكن إذا قمت بتسجيل الدخول حتى إذا لم تكن قد أكملت الإعدادات الأولية ، مثل عندما تخليت عن الإعدادات الأولية في المنتصف ولم تكملها ، فسترى هذه الشاشة. على سبيل المثال ، إذا تخلت عن الإعداد في ProfileActivity الافتراضي ، فستكون في موقف سجلت فيه الدخول ولكن لا توجد معلومات في ("المستخدمين") من FirebaseDB. أيضًا ، إذا تخلت عن الإعداد باستخدام PasscodesetActivity الافتراضي ، فستكون في موقف تقوم فيه بتسجيل الدخول ولكن لا توجد معلومات رمز مرور في ("المستخدمين") من FirebaseDB. تحقق من هذه الحالات باستخدام OnResume واستعد الإعدادات الافتراضية إن أمكن.





↑ عند الضغط على زر الرجوع ، سيعرض مربع الحوار ما إذا كان سيتم إنهاء التطبيق.

الفصل الرابع :





لنقم بإنشاء تطبيق دردشة باستخدام Firebase 〘قم بإنشاء تخطيط الصفحة الرئيسية [ButtomNavigationBar]〙

وصلنا إلى ، الجزء 4 وهو إعداد شريط التنقل وبعض التخطيطات الخاصة بالصفحة الرئيسية . دعنا نبدأ!

①HomeActivity{OnCreate}

يتم تنفيذ BottomNavigationBar في Linear.  في تخطيط xml ، اضبط Linear في الأسفل وأضف زر تنقل باستخدام الكود في OnCreate.  إذا كنت تريد تغيير لون شريط التنقل ، فقم بتغيير لون خلفية Linear.

 هذه المرة سننشئ شريط تنقل به زرين.  حدد المعرف الخطي للعرض.  بالنسبة لـ Left Title ، أدخل العنوان الذي سيتم عرضه على الزر الأيسر ، وبالنسبة لـ Right Title ، أدخل العنوان الذي سيتم عرضه على الزر الأيمن.  في SelectedColor ، اكتب لون الزر عند تحديده في # سداسي عشري.  في No Selected Color ، اكتب لون الزر عندما لا يتم تحديده في # سداسي عشري.




 
↑ بالإضافة إلى ذلك ، ابحث عن رمزك واسمك في البيانات في FirebaseDB ("المستخدمون") واعرضها.  هل تعلم كيفية استرداد بياناتك لأنك فعلت الشيء نفسه عند إعداد ProfileActivity؟

② HomeActivity{~ButtomNavigationBar~}

يتم تعيين صورة الزر في الجزء الذي يتم فيه رسم العلامة الحمراء. الرجاء كتابة معرف الصورة هنا.

 يتم وضع العملية عند النقر تحت السهم. بشكل أساسي ، يمكنك ضبط عرض / عدم عرض الخطية وتبديل النص هنا.

③HomeActivity{onBackPressed}





 ↑ عند الضغط على زر الرجوع ، دعنا نتحقق مما إذا كنت تريد إنهاء التطبيق. هنا ، FinishAffiniity يعني حذف كافة الصفحات.



الفصل الخامس :





 لنقم بإنشاء تطبيق دردشة باستخدام Firebase إضافة الأصدقاء وعرضهم〙فيما يلي طريقة إضافة الأصدقاء وعرض قائمة الأصدقاء. دعنا نبدأ!

① اضافة AddActivity{OnChildAdded/Changed/Removed}




↑ في هذه الأحداث الثلاثة ، تتم قراءة FirebaseDB ("المستخدمون") ويتم عرض قائمة بالمستخدمين. ومع ذلك ، فإن مجرد التحميل ("المستخدمون") سيظهر لبعض المستخدمين غير المناسبين للعرض (المستخدمون الذين هم بالفعل أصدقاء لك). للعثور على مستخدمين أصدقاء بالفعل ، تحتاج إلى الحصول على المعلومات في ("المستخدمين / Uid / FriendList"). لسوء الحظ ، لا يحتوي SketchWare على كتلة لقراءة المسار الذي يحتوي على Uid. لذلك ، دعنا ننفذها باستخدام كتلة تقرأ المعلومات من مسار قاعدة البيانات المحددة باستخدام MoreBlock وتحفظها في متغير List. أريد هذه المرة الحصول على قائمة بالمفاتيح ، لذلك سأحصل على البيانات باستخدام ListString. بعد الحصول على Uid الخاص بالصديق باستخدام ListString ، قم بإنشاء العملية بعد الحصول عليها في More Block.

 ~ العملية في MoreBlock

 ① إذا لم يكن لديك أي أصدقاء ، فاحذف بيانات Uid الخاصة بك من خريطة القائمة.

 (2) إذا كان لديك صديق واحد ، فاحذف بيانات Uid وبيانات ListString Uid من خريطة القائمة.

 ③ يمكنك الآن وضع قائمة بالمستخدمين المناسبين في خريطة القائمة! إذا قمت بتوصيل ListView وخريطة القائمة هذه وقمت بتحديث ListView ، فإن عرض القائمة يكون ناجحًا.





↑ في"المزيد من الكتلة" ، سننشئ عملية لعرض الأحرف "لا يمكن إضافة صديق". عندما يكون عدد الأصدقاء الذين يمكن إضافتهم هو 0. من الغريب رؤية النص الذي لا يمكن لأي شخص إضافة صديق حتى لو كان مدرجًا. لذلك ، سنقرر ما إذا كنا سنعرض TextView بناءً على عدد البيانات في Listmap. إذا كان عدد البيانات هو 0 (علامة) ، فقم بتعيين ListView على Gone (مخفي) و TextView "لا يمكن إضافة أي صديق." إلى مرئي (عرض). على العكس من ذلك ، إذا لم يكن 0 (وليس علامة) ، فقم بتعيين عرض القائمة على مرئي (عرض) وعرض النص "لا يمكن إضافة صديق". إلى ذهب (إخفاء).





↑ عند النقر فوق الزر "حفظ" ، حدد أولاً ما إذا كان متغير الخريطة له قيمة. إذا لم يكن لمتغير الخريطة أي قيمة ، فهذا يعني أنك لم تحدد المستخدم ولا تحتاج إلى فعل أي شيء. إذا كان متغير الخريطة يحتوي على قيمة ، فأنت بحاجة إلى إضافة هذه القيمة (Uid) إلى قائمة أصدقاء FirebaseDB. لسوء الحظ ، لا يوفر SketchWare كتلة للكتابة عن طريق تحديد المسار بما في ذلك Uid. لذلك ، دعنا نضع قيمة متغير الخريطة في المسار المحدد باستخدام الكتلة المطبقة في MoreBlock. بمجرد إضافته إلى أصدقائك ، عليك أن تجعلهم أصدقاء أيضًا. لذلك ، احفظ مؤقتًا Uid المحفوظ في متغير الخريطة في ListString وأضفه إلى قائمة الأصدقاء لكل Firebase DB. كما ذكرت من قبل ، ستتم إضافة الأصدقاء فجأة من الطرف الآخر ، لذلك قد يكون الأمر غير مريح تمامًا. ومع ذلك ، لا أريد قضاء الكثير من الوقت في إضافة الأصدقاء ، لذلك سأضيف أصدقاء بهذه الطريقة.

② HomeActivity{OnResume/onClick(addicon)}




↑ ضبط إعدادات عرض الأصدقاء. أولاً ، احفظ معلومات المستخدم في ListMap من ("المستخدمين") من FirebaseDB. الآن قم بإزالة المستخدمين غير المناسبين للعرض كما كان من قبل (المستخدمون الذين ليسوا أصدقاء لك). احصل على Uid الخاص بالصديق في ("users / Uid / FriendList") من FirebaseDB مع ListString ، وإذا لم يتطابق Uid of ListString و ListMap ، فاحذف معلومات المستخدم الخاصة بـ ListMap. الآن لديك قائمة بالمستخدمين المناسبين في Listmap! إقران ListView هذا بـ ListView وقم بتحديث ListView.


③ InformationActivity{OnCreate/onClicked(remove)}

عند النقر فوق "إزالة" ، يتم عرض مربع حوار يسألك عما إذا كنت تريد إزالة هذا المستخدم.  في هذا الوقت ، دعنا نعرض كل رمز بجوار العنوان.  عند النقر على الزر "موافق" ، احذف المعلومات من Firebase DB.  مرة أخرى ، لا يحتوي Sketchware على كتلة لإزالة البيانات من أي بنية شجرة ، لذلك دعونا نزيلها من MoreBlock.  قم بإنهاء النشاط عند اكتمال الحذف.

 



④ إكتمال - وبهذا نكون قد انتهينا من كتابة تطبيق بسيط وصغير يشبه واتساب ويستخدم للمحادثة في الوقت الفعلي - يمكنك نشر التطبيق على متجر Play بعد أن تقوم بإضافة لمساتك السحرية وأفكار جديدة لتظهر من بين الحشود على متجر Play ويلاقي تطبيق نجاحاً باهراً


يمكنك تنزيل الكود 📲. 

تعليقات

المشاركات الشائعة من هذه المدونة

ببضع نقرات كيف تقوم بتصميم نموذج رائع لترويج للسلع الخاصة بك، بدون جهد!

7 نصائح لتحسين الصور الملتقطة بهاتفك المحمول وأفضل التطبيقات للقيام بذلك