辛奇移动验证跳过

Sinch mobile verification Skipping

我制作了一个应用程序,首先用户在 sinch 验证的帮助下验证其号码,然后在成功验证后进入游戏活动,但问题是每次用户打开他或她的应用程序时再次验证这是一个非常糟糕的结果。

我不知道如何在再次打开应用程序后跳过验证过程

主要Activity

    public class MainActivity extends Activity {

    public static final String SMS = "sms";
    public static final String FLASHCALL = "flashcall";
    public static final String INTENT_PHONENUMBER = "phonenumber";
    public static final String INTENT_METHOD = "method";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        TextView phoneNumber = (TextView) findViewById(R.id.phoneNumber);
        phoneNumber.setText(manager.getLine1Number());
    }

    private void openActivity(String phoneNumber, String method) {
        Intent verification = new Intent(this, VerificationActivity.class);
        verification.putExtra(INTENT_PHONENUMBER, phoneNumber);
        verification.putExtra(INTENT_METHOD, method);
        startActivity(verification);
    }

    private boolean checkInput() {
        TextView phoneNumber = (TextView) findViewById(R.id.phoneNumber);
        if (phoneNumber.getText().toString().isEmpty()) {
            Toast.makeText(this, "Please input a phone number.", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }

    public void onButtonClicked(View view) {
        if (checkInput()) {
            TextView phoneNumber = (TextView) findViewById(R.id.phoneNumber);
            if (view == findViewById(R.id.smsVerificationButton)) {
                openActivity(phoneNumber.getText().toString(), SMS);
            } else if (view == findViewById(R.id.callVerificationButton)) {
                openActivity(phoneNumber.getText().toString(), FLASHCALL);
            }
        }
    }

}

验证Activity

 public class VerificationActivity extends Activity {

    private static final String TAG = Verification.class.getSimpleName();
    private final String APPLICATION_KEY = "af23************************";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_verification);
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressIndicator);
        progressBar.setVisibility(View.VISIBLE);

        Intent intent = getIntent();
        if (intent != null) {
            String phoneNumber = intent.getStringExtra(MainActivity.INTENT_PHONENUMBER);
            String method = intent.getStringExtra(MainActivity.INTENT_METHOD);
            TextView phoneText = (TextView) findViewById(R.id.numberText);
            phoneText.setText(phoneNumber);
            createVerification(phoneNumber, method);
        }

    }

    void createVerification(String phoneNumber, String method) {
        Config config = SinchVerification.config().applicationKey(APPLICATION_KEY).context(getApplicationContext())
                .build();
        VerificationListener listener = new MyVerificationListener();
        Verification verification;
        if (method.equalsIgnoreCase(MainActivity.SMS)) {
            verification = SinchVerification.createSmsVerification(config, phoneNumber, listener);
        } else {
            TextView messageText = (TextView) findViewById(R.id.textView);
            messageText.setText(R.string.flashcalling);
            verification = SinchVerification.createFlashCallVerification(config, phoneNumber, listener);
        }
        verification.initiate();
    }

    class MyVerificationListener implements VerificationListener {

        @Override
        public void onInitiated() {
            Log.d(TAG, "Initialized!");
        }

        @Override
        public void onInitiationFailed(Exception exception) {
            Log.e(TAG, "Verification initialization failed: " + exception.getMessage());
            hideProgress(R.string.failed, false);
        }

        @Override
        public void onVerified() {
            Log.d(TAG, "Verified!");
            hideProgress(R.string.verified, true);
        }

        @Override
        public void onVerificationFailed(Exception exception) {
            Log.e(TAG, "Verification failed: " + exception.getMessage());
            hideProgress(R.string.failed, false);
        }
    }

    void hideProgress(int message, boolean success) {
        if (success) {
            ImageView checkMark = (ImageView) findViewById(R.id.checkmarkImage);
            checkMark.setVisibility(View.VISIBLE);
        }
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressIndicator);
        progressBar.setVisibility(View.INVISIBLE);
        TextView progressText = (TextView) findViewById(R.id.progressText);
        progressText.setVisibility(View.INVISIBLE);
        TextView messageText = (TextView) findViewById(R.id.textView);
        messageText.setText(message);
    }

}

我只是希望在重新打开验证过程时不应该再次调用。

您可以使用 SharedPreferences。将 key 添加到您的 SharedPreferences 对象并使用值 0 进行初始化。您可以执行以下操作

SharedPrefences prefences = PrefenceManager.getSharedPreferences("TAG",Context.MODE_PRIVATE);

SharedPreferences.Editor editor = preferences.edit();

现在验证成功:

preferences.putInt("key",1);

所以在下次启动时检查这个 key 值,如果它 1 跳过 VerificationActivity 并开始 GameActivtiy

int value = preferences.getInt("key",0);

if(value == 0){
  // Verify
}else{
  // Skip Verification
}