Servicios y logros de juegos(코트린)

주가도 드블린다르 유엔 시장은 매우 좋은 파트너라고 말했다.
이 강좌에서 우리는 간단한 안드로이드 스튜디오 프로젝트에서 아그레가 로거스 우산도 코틀린(usando Kotlin)이라는 엔지니어를 소개할 것이다.
Primero, 영국 황실 해군 사령부 집적부: https://developer.huawei.com/consumer/en/codelab/HMSPreparation/index.html#0
Después de integrar HMS Core, habilite 게임 서비스 y 계정 키트

아호라 바야 미스 아플리치오니 셀레치오니 오페라 -> 로그로스


클레어 하우스 호텔



ID:Una cadenaúnica generada por AppGallery Connect para car un logro.
이름: Un nombre corto para el logro que define durante la configuración del logro(máximo de 100캐럿).
묘사전반적으로 말하면, 이것은 500캐럿의 영화다.
아이콘: 이것은 좋은 예입니다.El icono debe ser de 512 x 512 px y 형식 png o jpg.에버트 울리자르 파라블라스(palabras de su icono)는 현지의 호텔이다.HMS SDK generar á Automoticamente un jecono de version en escala de grises basado en este jecono와 lo usará para loss logros desbloqueados.
주: 유엔이 유엔의 다른 지역에 있는 입법 기구.
- 숨겨진: 네 눈이 얼마나 큰 의미인지.이것은 국제올림픽위원회의 중요한 장비로 축구 선수의 프로 생애를 묘사한다.만약 네가 광희를 좋아하지 않는다면, 너의 눈과 이교 세계의 광희는 광희를 필요로 하지 않을 것이다.
- 폭로: 이것은 뜻깊은 광환이다. 그것은 위대한 광환이다.이것은 매우 좋은 예로, 그것의 구조는 매우 복잡하다.
- 잠금 해제: 아주 중요한 곳이야.이것은 아주 좋은 선택이다.만약 당신이 젊은이라면, 주이고 고등학교의 한 곳에서 신입생을 얻을 수 있을 것이다.영국 왕립 해군사령부 SDK는 EU 위원회의 회의에서 논의를 허용했으며, EU 위원회의 회의에서 화웨이는 EU 위원회에 서비스를 제공할 예정이다.
단계: 로그로스 동남부 설계도.이것은 점진적인 과정이고 완전한 과정이다.에스터 누메로는 코모코모로그로 강 연안의 파소스 강을 미리 정의했다.
목록 순서: El orden en El que aparece El logro actual entre todos loss logros.이것은 설계 방안이다.
지난 몇 년 동안 우리는 모래상자에서 자유주의자와 응용주의자 간의 관계를 발견했다.

안드로이드 스튜디오 프로젝트, agregue el kit de cuenta와 el kit de servicio de juegos para build.그라데이션 y 동기화
implementation'com.huawei.hms:hwid:5.0.3.301'
implementation'com.huawei.hms:game:5.0.3.301'
회사 명
class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        HuaweiMobileServicesUtil.setApplication(this)
    }
}
이 목표를 실현하는 것은 aplicación의 목표를 실현하기 위해서이다
<application
    android:name=".MyApplication"
주요 활동
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    JosApps.getJosAppsClient(this).init()
}
juego 서비스와 Obstener Logros u otros datos de Servicios de juego, debemos Inicia r con la cuenta del jugador.이것은 새로운 의미의 행위다.
package com.hector.hmscore.signin

import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.widget.Toast
import androidx.annotation.Nullable
import androidx.appcompat.app.AppCompatActivity
import com.hector.hmscore.R
import com.huawei.hmf.tasks.Task
import com.huawei.hms.common.ApiException
import com.huawei.hms.jos.games.Games
import com.huawei.hms.jos.games.player.Player
import com.huawei.hms.support.hwid.HuaweiIdAuthManager
import com.huawei.hms.support.hwid.request.HuaweiIdAuthParams
import com.huawei.hms.support.hwid.request.HuaweiIdAuthParamsHelper
import com.huawei.hms.support.hwid.result.HuaweiIdAuthResult
import org.json.JSONException

class SigninActivity : AppCompatActivity() {
    val TAG = "signinactivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_signin)

        signIn()
    }

    /**
     * When a player signs in, you need to call the HUAWEI ID sign-in verification API. If the verification is successful, call the getcurrentPlayer API to obtain player information.
     * 1. Call the silent sign-in API of the HUAWEI ID sign-in API so that the sign-in page will not be displayed for a game to which a player has already signed in.
     * 2. When silent sign-in fails, it indicates that this is the player's first sign-in and authorization from the player is required. In this case, in the callback, the explicit sign-in API is called to display the sign-in authorization page for sign-in verification.
     * The sign-in API is called in onActivity. Then you can call the API for obtaining player information.
     */
    private fun signIn() {
        val authHuaweiIdTask = HuaweiIdAuthManager.getService(this, getHuaweiIdParams()).silentSignIn()
        authHuaweiIdTask.addOnSuccessListener { authHuaweiId ->
            Log.i(TAG, "silentsignIn success")
            Log.i(TAG, "display:" + authHuaweiId.displayName)
            login()
        }.addOnFailureListener { e ->
            if (e is ApiException) {
                Log.i(TAG, "signIn failed:" + e.statusCode)
                Log.i(TAG, "start getSignInIntent")
                val service = HuaweiIdAuthManager.getService(
                    this@SigninActivity,
                    getHuaweiIdParams()
                )
                startActivityForResult(service.signInIntent, 6013)
            }
        }
    }

    /**
     * Obtain player information.
     */
    private fun login() {
        val  playersClient = Games.getPlayersClient(this)
        val playerTask: Task<Player> = playersClient.currentPlayer
        playerTask.addOnSuccessListener { player ->
            val playerID = player.playerId
            Toast.makeText(this@SigninActivity, "Player ID $playerID", Toast.LENGTH_LONG).show()
            Log.i(TAG, "getPlayerInfo Success, player info: " + player.playerId)
        }.addOnFailureListener { e -> //  Failed to obtain player information.
            if (e is ApiException) {
                Log.e(TAG, "getPlayerInfo failed, status: " + e.statusCode)
                Toast.makeText(this@SigninActivity, "getPlayerInfo failed, status: " + e.statusCode, Toast.LENGTH_LONG).show()
            }
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, @Nullable data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 6013) {
            if (null == data) {
                Toast.makeText(this@SigninActivity, "signIn inetnt is null", Toast.LENGTH_LONG).show()
                return
            }

            val jsonSignInResult = data.getStringExtra("HUAWEIID_SIGNIN_RESULT")
            if (TextUtils.isEmpty(jsonSignInResult)) {
                Toast.makeText(this@SigninActivity, "signIn result is empty", Toast.LENGTH_LONG).show()
                return
            }
            try {

                val signInResult = HuaweiIdAuthResult().fromJson(jsonSignInResult)
                if (0 == signInResult.status.statusCode) {
                    Log.i(TAG, "signIn success.")
                    Log.i(TAG, "signIn result: " + signInResult.toJson())
                    Toast.makeText(this@SigninActivity, "signIn result: " + signInResult.toJson(), Toast.LENGTH_LONG).show()
                } else {
                    Log.i(TAG, "signIn failed: " + signInResult.status.statusCode)
                    Toast.makeText(this@SigninActivity, "signIn failed: " + signInResult.status.statusCode, Toast.LENGTH_LONG).show()
                }
            } catch (var7: JSONException) {
                Log.i(TAG, "Failed to convert json from signInResult.")
                Toast.makeText(this@SigninActivity, "Failed to convert json from signInResult.", Toast.LENGTH_LONG).show()
            }
        }
    }

    private fun getHuaweiIdParams(): HuaweiIdAuthParams? {
        return HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM_GAME).setIdToken().createParams()
    }
}
아호라 포드모스(Ahorapodemos)는 로그로스(los Logros)의 소비자이자 크레레모스(crearemos) 성취 활동의 참여자이다.
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.hector.hmscore.databinding.ActivityAchievementsBinding
import com.huawei.hmf.tasks.OnFailureListener
import com.huawei.hmf.tasks.OnSuccessListener
import com.huawei.hmf.tasks.Task
import com.huawei.hms.common.ApiException
import com.huawei.hms.jos.games.AchievementsClient
import com.huawei.hms.jos.games.Games
import com.huawei.hms.jos.games.achievement.Achievement

class AchievementsActivity : AppCompatActivity() {
    lateinit var achievementsClient: AchievementsClient
    lateinit var binding: ActivityAchievementsBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityAchievementsBinding.inflate(layoutInflater)
        setContentView(binding.root)

        achievementsClient = Games.getAchievementsClient(this)

        getAchievementList()
    }

    private fun getAchievementList(){
        val task: Task<List<Achievement>> = achievementsClient.getAchievementList(true)
        task.addOnSuccessListener(OnSuccessListener { data ->
            if (data == null) {
                Log.w("Achievement", "achievement list is null")
                return@OnSuccessListener
            }
            var achievementText = ""
            for (achievement in data) {
                Log.w("Achievement", "achievement id" + achievement.id)
                achievementText += "id: ${achievement.id} \n displayName: ${achievement.displayName} \n\n"
            }
            binding.textViewAchievements.text = achievementText
        }).addOnFailureListener { e ->
            if (e is ApiException) {
                val result = "rtnCode:" +
                        (e as ApiException).statusCode
                Log.e("Achievement", result)
            }
        }
    }
}
주: 간단한 텍스트 보기와 보기가 연결되어 있습니다.
Además,podemos reemplazar el método getAchievementList con el siguiente método para la página de logros,pero esta página solo muestra los logros si la aplicación se lanza in AppGallery.
//Only works when the application is on release
private fun getShowAchievementListIntent(){
        val task: Task<Intent> = achievementsClient.showAchievementListIntent
        task.addOnSuccessListener { intent ->
            if (intent == null) {
                Log.w("Achievement", "intent = null")
            } else {
                try {
                    startActivityForResult(intent, 1)
                } catch (e: java.lang.Exception) {
                    Log.e("Achievement", "Achievement Activity is Invalid")
                }
            }
        }.addOnFailureListener { e ->
            if (e is ApiException) {
                val result = ("rtnCode:" + e.statusCode)
                Log.e("Achievement", "result:$result")
            }
        }
    }
아호라 푸에드스(Ahora puedes)와 로그로스(la lista de logros)는 갑론을박을 벌이고 있다.
와야 주 로그리스시 데탈레스 소브레 거리의 도로https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/game-achievement
플로시모포스트에서, 이것은 합작과 발전에 관한 문장이다.

좋은 웹페이지 즐겨찾기