Google Play 登入、排行榜、ADmob广告等安卓SDK接入
效果图

官方地址和教程
Google Play 登入、排行榜
? GooglePlay Console开发者地址:Play Console (google.com)
? (注:成为谷歌开发者需要25$) 
? 打开网址点击创建应用,应用创建完毕可以得到12位的app_id,进入相应应用后台找到Play游戏服务
? 不会配置凭据的可以打开官方接入文档尝试登录 Android | Google Sign-In for Android | Google Developers 
? 如上图点击配置项目选择自己创建的应用点击Next后根据自己需要选择对应的平台凭据
? 最后点击Create后就可以打开https://console.cloud.google.com/并且点击转到API概览->凭据进行凭据查看会看到有两条OAuth 2.0客户端ID信息

点击后面下载按钮可以获取到client_id,该值用于后面替换安卓项目的server_client_id的值 
? 操作完成后回到Play Console下的Play游戏服务进行排行榜的创建,创建完毕后可以拿到排行榜的Id,用于android项目leaderboard_easy值得替换
ADmob广告
? 打开Google AdMob进行应用的创建,最好名字和Play Console创建的一致 
? 点击添加应用即可增加一个应用,并且生成一个应用Id,后续用于android项目APPLICATION_ID的value替换

? 然后进入对应的应用设置,点击广告单元新建自己想要的广告单元,创建完毕对应的广告单元下方会有广告单元的Id,用于android项目ad_unit_id的替换
总结:至此配置部分完毕,接下来进行代码部分
ADmob广告代码实现
fun Initialize(activity: Activity,view: FrameLayout)
{
MobileAds.initialize(activity)
mAdView = AdView(activity)
mAdView?.adSize = adSize(activity,view)
mAdView?.adUnitId = activity.getString(R.string.ad_unit_id)
mAdRequest = AdRequest.Builder().build()
view.addView(mAdView)
mAdView?.loadAd(mAdRequest!!)
}
private fun adSize(activity: Activity,view: FrameLayout): AdSize
{
val display = activity.windowManager.defaultDisplay
val outMetrics = DisplayMetrics()
display.getMetrics(outMetrics)
val density = outMetrics.density
var adWidthPixels = view.width.toFloat()
if (adWidthPixels == 0f) {
adWidthPixels = outMetrics.widthPixels.toFloat()
}
val adWidth = (adWidthPixels / density).toInt()
return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(activity, adWidth)
}
Google Play 登入、排行榜
override fun Initialize(activity: Activity) {
mActivity = activity
mGoogleSignInClient = GoogleSignIn.getClient(
activity,
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestEmail()
.build()
)
}
fun CheckIsLogined(): Boolean {
if(GoogleSignIn.getLastSignedInAccount(mActivity)!=null)
{
return true
}
return false
}
fun DoLogin() {
if(!CheckIsLogined())
mActivity.startActivityForResult(mGoogleSignInClient.signInIntent, ActivityResultCode.GooglePlayLogin.code)
}
fun OpenRankingList(){
if(CheckIsLogined())
{
Games.getLeaderboardsClient(mActivity, GoogleSignIn.getLastSignedInAccount(mActivity)!!)
.getLeaderboardIntent(mActivity.getString(R.string.leaderboard_easy))
.addOnSuccessListener { intent ->
mActivity.startActivityForResult(
intent,
ActivityResultCode.OpenRankList.code
)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == ActivityResultCode.GooglePlayLogin.code) {
val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data!!)
if(result!!.isSuccess)
{
Toast.makeText(mActivity,"Google Play Login Success",Toast.LENGTH_LONG).show()
OpenRankingList()
}
else
Toast.makeText(mActivity,"Google Play Login Failed,Code:${result.status.statusCode}",Toast.LENGTH_LONG).show()
}
}
项目开源源码:https://gitee.com/yang_sizang/Google-Play.git
邮箱:407551879@qq.com
|