환자 추적 Android 앱(Kotlin)에 Huawei 계정 키트 통합 - 1부

14831 단어

소개
이 기사에서는 Huawei Account Kit를 Patient Tracking 앱에 통합하는 방법을 알아볼 수 있습니다. 그래서 저는 이 환자 추적 앱에 대한 일련의 기사를 제공할 것이며, 향후 기사에서는 다른 Huawei 키트를 통합할 것입니다.

계정 키트
Huawei 계정 키트는 개발자에게 간단하고 안전하며 빠른 로그인 및 인증 기능을 제공합니다. 사용자는 계정과 암호를 입력하고 인증을 기다릴 필요가 없습니다. 사용자는 HUAWEI ID로 로그인 버튼을 클릭하여 빠르고 안전하게 앱에 로그인할 수 있습니다.

요구 사항
  • 모든 운영 체제(MacOS, Linux 및 Windows).
  • HMS 4.0.0.300 이상이 설치된 Huawei 휴대폰이 있어야 합니다.
  • Android Studio, JDK 1.8, SDK 플랫폼 26 및 Gradle 4.6 이상이 설치된 노트북 또는 데스크톱이 있어야 합니다.
  • 최소 API 레벨 24가 필요합니다.
  • EMUI 9.0.0 이상 버전 장치가 필요합니다.

  • HMS 종속성을 통합하는 방법
  • 먼저 Huawei 개발자로 등록하고 Huawei 개발자 웹 사이트에서 신원 확인을 완료합니다. 등록 aHuawei ID를 참조하십시오.
  • android studio에서 프로젝트를 생성합니다. Creating an Android Studio Project을 참조하십시오.
  • SHA-256 인증서 지문을 생성합니다.
  • SHA-256 인증서 지문을 생성합니다. Android 프로젝트의 오른쪽 상단에서 Gradle을 클릭하고 Project Name > Tasks > android를 선택한 후 다음과 같이 SigningReport를 클릭합니다.



  • 참고: 프로젝트 이름은 사용자가 만든 이름에 따라 다릅니다.
  • Create an App in AppGallery Connect .
  • 다음과 같이 앱 정보에서 agconnect-services.json 파일을 다운로드하고 앱 디렉토리 아래의 android Project에 복사하여 붙여넣습니다.


  • 다음과 같이 SHA-256 인증서 지문을 입력하고 저장 버튼을 클릭합니다.


  • API 관리 탭을 클릭하고 계정 키트를 활성화합니다.


  • buildscript, dependencies 및 allprojects의 리포지토리 아래 build.gradle(Project) 파일에 아래 maven URL을 추가합니다. Add Configuration을 참조하십시오.

  • maven { url 'http://developer.huawei.com/repo/' }
    classpath 'com.huawei.agconnect:agcp:1.6.0.300'
    

  • build.gradle(Module) 파일에 아래 플러그인 및 종속 항목을 추가합니다.

  • apply plugin: id 'com.huawei.agconnect'
    // Huawei AGC
    implementation 'com.huawei.agconnect:agconnect-core:1.6.0.300'
    // Huawei Account Kit
    implementation 'com.huawei.hms:hwid:6.3.0.301'
    

  • 이제 Gradle을 동기화합니다.
  • AndroidManifest.xml 파일에 필요한 권한을 추가합니다.

  • <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    

    개발로 이동하자
    빈 활동으로 Android 스튜디오에서 프로젝트를 생성하여 코딩을 시작하겠습니다.

    MainActivity.kt에서 비즈니스 로직을 찾을 수 있습니다.

    class MainActivity : AppCompatActivity() {
    
        // Account Kit variables
        private var mAuthManager: AccountAuthService? = null
        private var mAuthParam: AccountAuthParams? = null
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            // Account kit button click Listener
            btn_login.setOnClickListener(mOnClickListener)
    
        }
    
        // Account kit, method to send an authorization request.
        private fun signIn() {
            mAuthParam = AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
                .setIdToken()
                .setAccessToken()
                .setProfile()
                .createParams()
            mAuthManager = AccountAuthManager.getService(this@MainActivity, mAuthParam)
            startActivityForResult(mAuthManager?.signInIntent, 1002)
        }
    
        private val mOnClickListener: View.OnClickListener = object : View.OnClickListener {
            override fun onClick(v: View?) {
                when (v?.id) {
                    R.id.btn_login -> signIn()
                }
            }
        }
    
        // Process the authorization result
        override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
            if (requestCode == 1002 ) {
                val authAccountTask = AccountAuthManager.parseAuthResultFromIntent(data)
                if (authAccountTask.isSuccessful) {
                    Toast.makeText(this, "SigIn success", Toast.LENGTH_LONG).show()
                    val intent = Intent(this@MainActivity, Home::class.java)
                    startActivity(intent)
                } else {
                    Toast.makeText(this, "SignIn failed: " + (authAccountTask.exception as ApiException).statusCode, Toast.LENGTH_LONG).show()
                }
            }
        }
    
    
    }
    
    


    activity_main.xml에서 UI 화면을 만들 수 있습니다.

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            tools:ignore="ExtraText,MissingConstraints">
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="62dp"
                android:layout_marginTop="35dp"
                android:layout_marginRight="62dp"
                android:gravity="center"
                android:paddingTop="14dp"
                android:paddingBottom="14dp"
                android:text="Login"
                android:textColor="@color/black"
                android:textSize="28sp"
                android:textStyle="bold">
            </TextView>
    
            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="62dp"
                android:layout_marginTop="32dp"
                android:layout_marginRight="62dp"
                android:background="@drawable/blue_border_rounded_cornwe">
    
                <EditText
                    android:id="@+id/edt_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@id/username_icon"
                    android:background="@android:color/transparent"
                    android:hint="Enter Username "
                    android:inputType="textEmailAddress"
                    android:maxLines="1"
                    android:paddingLeft="17dp"
                    android:paddingTop="15dp"
                    android:paddingBottom="15dp"
                    android:textSize="13sp">
                </EditText>
    
                <ImageView
                    android:id="@+id/username_icon"
                    android:layout_width="20dp"
                    android:layout_height="17dp"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="17dp"
                    android:src="@drawable/username" />
            </RelativeLayout>
    
            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="62dp"
                android:layout_marginTop="13dp"
                android:layout_marginRight="62dp"
                android:background="@drawable/blue_border_rounded_cornwe">
    
                <EditText
                    android:id="@+id/edt_pass"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@id/pass_icon"
                    android:background="@android:color/transparent"
                    android:hint="Password"
                    android:inputType="textPassword"
                    android:maxLength="10"
                    android:maxLines="1"
                    android:paddingLeft="17dp"
                    android:paddingTop="15dp"
                    android:paddingBottom="15dp"
                    android:textSize="13sp">
                </EditText>
    
                <ImageView
                    android:id="@+id/pass_icon"
                    android:layout_width="20dp"
                    android:layout_height="17dp"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="17dp"
                    android:src="@drawable/password" />
            </RelativeLayout>
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginTop="12dp"
                android:layout_marginRight="63dp"
                android:paddingTop="14dp"
                android:paddingBottom="14dp"
                android:text="Forgot Password?"
                android:textAllCaps="false"
                android:textColor="#0A0A0B"
                android:textSize="14sp">
            </TextView>
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="62dp"
                android:layout_marginTop="19dp"
                android:layout_marginRight="62dp"
                android:background="@drawable/blue_fill__rounded_color"
                android:gravity="center"
                android:paddingTop="14dp"
                android:paddingBottom="14dp"
                android:text="Login"
                android:textColor="@color/white"
                android:textSize="15sp">
            </TextView>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="45dp"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="16dp"
                android:gravity="center"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="Sign in with Social Networks"
                    android:textColor="#0E0E0E"
                    android:textSize="15sp">
                </TextView>
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="55dp"
                android:gravity="center"
                android:orientation="horizontal">
                <ImageView
                    android:id="@+id/btn_login"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:src="@drawable/huawei_icon" />
                <ImageView
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:layout_marginLeft="30dp"
                    android:layout_marginRight="30dp"
                    android:src="@drawable/google" />
                <ImageView
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:layout_marginRight="20dp"
                    android:src="@drawable/instagram_icon" />
            </LinearLayout>
        </LinearLayout>
    
    </RelativeLayout>
    


    데모


    팁과 요령
  • 이미 Huawei 개발자로 등록되어 있는지 확인하십시오.
  • minSDK 버전을 24 이상으로 설정하십시오. 그렇지 않으면 AndriodManifest 병합 문제가 발생합니다.
  • 앱 폴더에 agconnect-services.json 파일을 추가했는지 확인하십시오.
  • 반드시 SHA-256 지문을 추가했는지 확인하십시오.
  • 모든 종속성이 제대로 추가되었는지 확인하십시오.

  • 결론
    이 기사에서는 Huawei 계정 키트를 환자 추적 앱에 통합하는 방법을 배웠습니다. 그래서 저는 이 환자 추적 앱에 대한 일련의 기사를 제공할 것이며, 향후 기사에서는 다른 Huawei 키트를 통합할 것입니다.

    이 기사를 읽으셨기를 바랍니다. 도움이 되셨다면 좋아요와 댓글 부탁드립니다.

    참조
    계정 키트 – Documentation

    계정 키트 – Training Video

    좋은 웹페이지 즐겨찾기