10. نحوه‌ی ورود توسط یوآیدی در اپلیکیشن اندروید

نحوه‌ی ورود توسط یوآیدی در اپلیکیشن اندروید به این صورت است که اپلیکیشن ابتدا باید با استفاده از یک کد ورود (LID) از سرور که به API یوآیدی متصل شده است دریافت نماید، سپس کد را به کتابخانه‌ی یوآیدی داده، کاربر به وب اپلیکیشن یوآیدی هدایت شده و پس از لاگین با توجه به تنظیماتی که در ادامه گفته میشود به اپلیکیشن بازمیگردد.
                    

10.1. کتابخانه

برای استفاده از لاگین یوآیدی در اپلیکیشن خود ابتدا باید SDK (فایل jar.) را از طریق لینک زیر دریافت و آن را به پروژه‌ی خود اضافه کنید.


                                                                                    
                    

10.2. پیاده سازی اطلاعات Manifest

به منظور این که بعد از لاگین در وب اپلیکیشن یوآیدی کاربر به اپلیکیشن شما هدایت شود، اطلاعات زیر را به Manifest پروژه خود اضافه کنید.
اطلاعات باید در بخش Activity ای که قصد دارید کاربر بعد از لاگین به آن هدایت شود وارد شود. ( به طور مثال MainActivity )
  • بخش launchMode در تنظیمات Activity را حتما وارد نمایید.
  • تگ‌های category و data را در تگ intent-filter طبق نمونه اضافه کنید.
  • در data به جای عبارت {businessId}، آیدی شرکت خود را که هنگام ثبت نام کسب و کار در یوآیدی دریافت نموده‌اید جایگذاری نمایید.
Description Parameter

ای دی شرکت شما که توسط یوآیدی صادر شده است.

businessId

<activity
android:name=".MainActivity"
android:launchMode="singleTask">
<intent-filter>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="ir.uid.apps.{businessId}"/>
</intent-filter>
</activity>

10.3. پیاده سازی لاگین با یوآیدی

برای لاگین کاربر توسط یوآیدی، بعد از اضافه کردن SDK طبق نمونه زیر یک Object از کلاس UidHelper در کلاس Activity خود در نظر گرفته و در متد onCreate، Object را بصورت زیر مقدار دهی کنید.

                
    
  public UidHelper uidHelper;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      uidHelper = UidHelper.getInstance(getIntent());
      // implementation
}
    
در مرحله‌ی بعد برای شروع فرایند لاگین متد startLoginWithUID را طبق نمونه‌ی زیر صدا بزنید.
Description Type Parameter

کد ورود که از سرور خود گرفته‌اید

String

lid

Description Type Parameter

یک context غیر null از Activity فعلی

Context

Context

    
uidHelper.startLoginWithUID( context , lid );
    
پس از صدا کردن متد فوق، کاربر از طریق مرورگر به وب اپ یوآیدی هدایت شده و فرایند لاگین آغاز میشود.

10.4. پیاده سازی بررسی نتیجه فرآیند


برای بررسی نتیجه فرایند لاگین بعد از بازگشت به اپلیکشین خود، متدهای زیر را در Activity که Manifest آن را در بالا تنظیم کردید طبق نمونه override کنید.
  • نتیجه فرایند را میتوانید در متد onUidLoginFinished که در نمونه آمده مشاهده نمایید.
  • اگر ورود موفقیت آمیز بوده باشد مقدار متغیر isSuccessful، True خواهد بود. در غیر این صورت مقدار False دارد.
  • خطای InvalidStatusException در صورتی رخ خواهد داد که لینک ارسالی به اپ مخدوش شده باشد.
    
public class MainActivity extends AppCompatActivity implements UidLoginCallback {

@Override
protected void onResume() {
    super.onResume();
    try {
        uidHelper.checkStatus(this);
    } catch (InvalidStatusException e) {
        // exception handling
    }
}

    

1.برای استفاده از Native SDK یوآیدی ابتدا تغییرات زیر را در پروژه‌ی خود اعمال کنید:

1.1. فایل‌های uid_sdk_native.aar و dialogplus.aar در پوشه libs مربوط به ماژول app کپی کنید.

1.2. در فایل build.gradle مربوط به ماژول app در بخش {}android دستورات زیر را اضافه کنید:



نکته : توجه داشته باشید این تغییر نسخه جاوا ماژول شما را به java 8 ارتقا می‌دهد.

                
    compileOptions {
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
}

1.3. در فایل بالا ، بخش {}dependencies ، کتابخانه‌های پایین رو اضافه کنید:


                
    implementation (name: 'uid_sdk_native', ext:'aar')
    implementation (name: 'dialogplus', ext:'aar')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-vector-drawable:28.0.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.github.bumptech.glide:okhttp-integration:4.8.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.android.support:support-core-ui:28.0.0'
    implementation 'pub.devrel:easypermissions:1.3.0'
    implementation 'com.github.d-max:spots-dialog:1.1@aar'
    implementation 'com.github.aliab:Persian-Date-Picker-Dialog:1.4'
    implementation 'me.relex:circleindicator:1.2.2@aar'
    implementation 'io.paperdb:paperdb:2.6'
    implementation("com.squareup.okhttp3:logging-interceptor:4.2.1")
    implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.3.0'
    implementation 'com.redmadrobot:inputmask:3.4.4'
    implementation ('com.alimuzaffar.lib:pinentryedittext:1.3.10')

1.4. در فایل build.gradle مربوط به project مطابق زیر تغییرات را اعمال نمایید:


                
    allprojects {
        repositories {
            .
            .
            .
            maven { url "https://jitpack.io" }
            flatDir {
                dirs 'libs'
            }
        }
    }

1.5. سپس فرمان sync گریدل را اجرا نمایید

ابتدا یک شیء از کلاس UidHelper در Activity خود تعریف نموده و در متد onCreate مطابق مثال ، آن را مقداردهی کنید:

                
public UidHelper uidHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    uidHelper = UidHelper.getInstance(getIntent());
}
سپس مطابق نمونه تغییرات لازم را به متد onNewIntent در اکتیویتی خود اعمال کنید :
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    uidHelper.updateIntent(intent);
}
:سپس برای هدایت کاربر به صفحه‌ی ورود یوآیدی و شروع جریان اهراز هویت در اپ خود مطابق نمونه از کد زیر استفاده کنید

                
Intent uidIntent = uidHelper.getUidLoginIntent(v.getContext());
startActivityForResult(uidIntent , 123);
برای بررسی نتیجه اهراز هویت در اپ خود میتوانید متد زیر را در Activity مطابق نمونه بازنویسی کنید:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 123){
        if (resultCode == RESULT_OK){
            //successful
        } else {
            //failed
        }
    }
}