كيفية عمل تسجيل دخول لبيانات المستخدم بواسطة firebase | بناء تطبيق شات بالفايربيز

كيفية عمل تسجيل دخول لبيانات المستخدم بواسطة firebase

كيفية عمل تسجيل دخول لبيانات المستخدم بواسطة firebase

في مقالة اليوم سوف نتعرف على كيفية عمل تسجيل دخول الى حسابك في تطبيق chat app , وكيف يمكن تخزين البيانات في الجهاز لتمكين الدخول الى الحساب في المره المقبله دون الحاجه الى كتابة المعلومات من جديد 


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


اذا كنت تبحث عن شروحات في مجال تطوير تطبيقات الاندرويد والصناعه تطبيقات الهواتف الذكيه فانصحك جدا بمشاهده الموقع في هذا الموقع شاركت معكم مجموعه كبيره وضحمة من الاكواد والشروحات وتقريبا غطينا معكم البرنامج بشكل كامل و اغلب الاشياء التي تستخدم فيها ودائما نحاول تغذيه الموقع بشروحات جديده واكواد جديد وافكار جديدة دائما ونستطيع القول انك من خلال الشروحات التي قدمناها تستطيع بكل سهوله تطوير اي فكرة تطبيق تخطر ببالك حيث يمكنك البحث عن الشيء الذي تريد عمله في تطبيق و سوف تجده باذن الله في موقعنا واذا لم تجده حاول ترك لنا تعليق ليتم توفيرة 


التاكد من صحة البيانات وعرض progressbar 

التاكد من صحة البيانات وعرض progressbar

سوف نحتاج اولا الى عمل ميثود progressbar لكي نقوم باظهاره عندما يكون هناك عملية تسجيل دخول في التطبيق .


private Boolean Validation() {
    if (binding.inputEmail.getText().toString().trim().isEmpty()) {
        showText("Enter your email ! ");
        return false;
    } else if (!Patterns.EMAIL_ADDRESS.matcher(binding.inputEmail.getText().toString()).matches()) {
        showText("Enter Valid email !");
        return false;
        } else if (binding.inputPassword.getText().toString().trim().isEmpty()) {
        showText("enter Password");
        return false;
    } else  {
        return true;
    }}

    private void showText(String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }

    private void progressbar (Boolean loading) {
        if (loading) {
            binding.btnSignIn.setVisibility(View.INVISIBLE);
            binding.progressbar.setVisibility(View.VISIBLE);
        } else {
            binding.btnSignIn.setVisibility(View.VISIBLE);
            binding.progressbar.setVisibility(View.INVISIBLE);
        }

    }
    


الحصول على بيانات المستخدم من firebase

الحصول على بيانات المستخدم من firebase

في هذة الخطوة سوف نقوم بجلب بيانات المستخدم من خدمة firebase ومن ثم نقوم بعد ذلك بتخزينها في preference لكي تبقى في ذاكرة الهاتف الخاص بالمستخدم .

 private void setData_for_firebase () {
        progressbar(true);
        FirebaseFirestore firestore = FirebaseFirestore.getInstance();
        firestore.collection(Constants.KEY_COLLECTION_USERS).
                whereEqualTo(Constants.KEY_EMAIL , binding.inputEmail.getText().toString())
                .whereEqualTo(Constants.KEY_PASSWORD , binding.inputPassword.getText().toString()).get().
                addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful() && task.getResult() != null && task.getResult().getDocuments().size() > 0) {
                    DocumentSnapshot snapshot = task.getResult().getDocuments().get(0);
                    preferenceManager.putBoolean(Constants.KEY_IS_SIGNED_IN , true);
                    preferenceManager.putString(Constants.KEY_USER_ID , snapshot.getId());
                    preferenceManager.putString(Constants.KEY_NAME , snapshot.getString(Constants.KEY_NAME));
                    preferenceManager.putString(Constants.KEY_IMAGE , snapshot.getString(Constants.KEY_IMAGE));

                    Intent intent = new Intent(getApplicationContext() , MainActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(intent);
                } else {
                    progressbar(false);
                    showText(getString(R.string.Unable_to_sign_in));
                }
            }
        });
    }
    


حفظ بيانات تسجيل الدخول الخاصة بالمستخدم


حفظ بيانات تسجيل الدخول الخاصة بالمستخدم

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

private void sign_in_to_app_always() {

        if (preferenceManager.getBoolean(Constants.KEY_IS_SIGNED_IN)) {
            startActivity(new Intent(getApplicationContext() , MainActivity.class));
        }
    }
    

الانتقالات في صفحة SiginActivity


private void set_Listeners() {
        binding.createAccount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getApplicationContext() , SignUpActivity.class));
            }
        });
        binding.btnSignIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (Validation()) {
                    setData_for_firebase ();
                }
            }
        });
    }
    

اكواد onCreate


اكواد onCreate

اخر خطوة سوف نقوم بتشغيل الmethode التي قمنا بها وقمنا بعملها في الonCreate وهو ما يتم عندما يبدء التطبيق في العمل .

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivitySignInBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        preferenceManager = new PreferenceManager(getApplicationContext());

        sign_in_to_app_always();
        set_Listeners();
    }
    

تعليقات