Cra sh на экране входа / регистрации в firebase auth из-за ограничения страны - PullRequest
0 голосов
/ 18 июня 2020

В приведенных ниже кодах я проверяю доступность подключения inte rnet, прежде чем пользователь сможет зарегистрироваться / войти, все работает нормально, но после того, как я выпустил приложение, я заметил, что пользователи из указанных c веков ( Сирия - Иордания), у которых есть ограничения на использование приложений из-за государственных правил, они получили cra sh и приложение закрылось при попытке зарегистрировать новую учетную запись или войти в систему с ранее созданными учетными записями, а другой пользователь - нет, если они из другой страны , Я не хочу обходить это, пока это относится к правилам правительства, чтобы контролировать страну, но я хочу тост за сообщение, которое уведомляет пользователя о том, что этот тип регистрации / входа в систему запрещен в его стране, вместо того, чтобы приводить к сбою приложения и внезапное закрытие. Примечание. - Пользователи, использующие прокси-приложения (VPN), могут зарегистрироваться или войти в одни и те же страны. Пожалуйста, найдите прикрепленные коды для регистрации / входа.

/// РЕГИСТРАЦИЯ ДЕЯТЕЛЬНОСТИ ///

public void UserRegister() {
        emailed = email.getText().toString();
        passworded = password.getText().toString();

         if (TextUtils.isEmpty(emailed)){
            Toast.makeText(Register.this, " ادخل عنوان بريد الكتروني اخر", Toast.LENGTH_SHORT).show();
            return;
        }else if (TextUtils.isEmpty(passworded)){
            Toast.makeText(Register.this, " ادخل كلمة سر خاصة", Toast.LENGTH_SHORT).show();
            return;
        }else if (passworded.length()<8){
            Toast.makeText(Register.this," كلمة السر لا تقل عن 8 رموز", Toast.LENGTH_SHORT).show();
            return;
        }else if (phone.length()<11) {
             Toast.makeText( Register.this, " رقم هاتف قصير", Toast.LENGTH_SHORT ).show();
             return;
         }
        mDialog.setMessage("   جاري انشاء الحساب , شكرا لانتضارك...");
        mDialog.setCanceledOnTouchOutside(false);
        mDialog.show();
        mAuth.createUserWithEmailAndPassword(emailed,passworded).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()){
                    sendEmailVerification();
                    mDialog.dismiss();
                    createAnewUser(task.getResult().getUser());
                    mAuth.signOut();
                    startActivity(new Intent(Register.this,login.class));
                    Animatoo.animateWindmill(Register.this);
                }else{
                    Toast.makeText(Register.this,"   خطأ في انشاء حسابك ,  تحقق من المعلومات والاتصال", Toast.LENGTH_SHORT).show();
                    mDialog.dismiss();



                }
            }
        });


    }
    //Email verification code using FirebaseUser object and using isSucccessful()function.
    public void sendEmailVerification() {
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        if (user!=null){
            user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()){
                        Toast.makeText(Register.this,"    تم ارسال رسالة التفعيل الى بريدك , يرجى التحقق", Toast.LENGTH_SHORT).show();
                        FirebaseAuth.getInstance().signOut();

                    }
                }
            });
        }
    }

// АКТИВНОСТЬ ВХОДА //

    private void userlogin() {
        email = Email.getText().toString().trim();
        password = Password.getText().toString().trim();
        if (TextUtils.isEmpty(email)) {
            Toast.makeText(login.this, "تأكد من عنوان البريد الالكتروني", Toast.LENGTH_SHORT).show();
            return;
        } else if (TextUtils.isEmpty(password)) {
            Toast.makeText(login.this, "كلمة مرور خاطئة", Toast.LENGTH_SHORT).show();
            return;
        }
        if (saveLoginCheckBox.isChecked()) {
            loginPrefsEditor.putBoolean("saveLogin", true);
            loginPrefsEditor.putString("email", email);
            loginPrefsEditor.putString("password", password);
            loginPrefsEditor.commit();
        } else {
            loginPrefsEditor.clear();
            loginPrefsEditor.commit();
        }
        dialog.setMessage("جاري تسجيل الدخول , يرجى الانتظار..");
        dialog.setIndeterminate(true);
        dialog.show();
        if(isOnline()){ mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (!task.isSuccessful()) {
                    dialog.dismiss();


                    Toast.makeText(login.this, "تـأكد من المعلومات لطفاً", Toast.LENGTH_SHORT).show();

                } else {
                    dialog.dismiss();
                    checkIfEmailVerified();

                }
            }
        });
        }
        else{
            Toast.makeText(login.this, "لا يوجد اتصال بالانترنت , تحقق من الاتصال لطفاً", Toast.LENGTH_LONG).show();}

    }


    private void checkIfEmailVerified(){
        FirebaseUser users=FirebaseAuth.getInstance().getCurrentUser();
        assert users != null;
        boolean emailVerified=users.isEmailVerified();
        if (emailVerified ){
            {
                Email.getText().clear();
                Password.getText().clear();
                Intent intent = new Intent(login.this, DashboardActivity.class);
                // Sending Email to Dashboard Activity using intent.
                intent.putExtra(userEmail,email);
                startActivity(intent);}

        }
        else {
            Toast.makeText( this , "التحقق من البربد لطفاً" ,Toast.LENGTH_LONG).show();
        }

    }
...