Google Play Service中安全检测API的使用说明

这篇博客详细讲解了如何使用Google Play Service进行安全检测,包括集成Client Library、判断设备支持情况、利用Google API Client访问服务以及SafetyNet的Attestation、Safe Browsing和Verify Apps API的使用方法。此外,还探讨了接口使用过程中的限制和问题。
摘要由CSDN通过智能技术生成

本篇博客主要记录一下如何利用Google Play Service进行安全检测。

1 Google Play Service的使用原理
Google Play Service提供了大量的API供用户使用,
以便让应用低成本地集成Google最新的产品及功能。

应用使用Google Play Service时,基本的原理如下图所示,其中:
1、应用在使用Google Play Service时,
必须集成Google提供的Client Library,
通过Client Library,应用才能与Google Play Service进行IPC通信。

2、Google Play Service是独立运行在系统后台的服务,
与Google Play Store共同发布。

3、Google Play Store负责更新Google Play Service。

可以看出,Google通过引入Client Library后,
将应用与Google Play Service解耦。

这样即使不修改应用,只要更新了Google Play Services,
应用就能够使用到Google提供功能的最新版本。
同时,Client Library还可以进行准入控制等相关操作。

2 集成Client Library

为了使用Client Library,首先我们需要利用Android Studio的SDK Manager加载Google Repository。
如上图所示,主要是勾选其中的红线部分,然后点击下载即可。

下载完Google Repository后,只需要修改应用Module对应的build.gradle文件,
加载对应的库文件即可。

例如:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    .....................

    //添加对play-service的依赖
    //Google Play Service更新后,修改对应的版本号
    compile 'com.google.android.gms:play-services:11.0.1'
}

这里需要注意的是,com.google.android.gms:play-services引入的是Google Play Service全体API的集合。

当我们仅需要特定API接口时,可以仅引入独立的库,
这样可以减小应用的体积,避免应用中方法数过多。

例如,仅需要SafetyNet时,可以仅compile:

com.google.android.gms:play-services-safetynet:11.0.1

目前,Play Service定义的所有独立API库可以参考如下链接:
https://developers.google.com/android/guides/setup

3 确保设备上的Google Play Service可用
当应用导入了Client Library后,我们就可以在应用中使用Client Library提供的接口了。

不过,我们知道一个应用将被安装到不同厂商的机器上,
部分厂商的ROM中并没有集成Google Play Store,更别提Google Play Service了。

因此,当应用需要使用Google Play Service的功能时,
首先需要做的就是判断当前设备是否具有对应的能力。

目前从文档来看,判断Google Play Service是否可用,
最好的办法就是使用Client Library中GoogleApiAvailability提供的接口。

具体的做法类似于:

//如果整个应用都依赖于Google Play Service
//那么就在MainActivity的onResume接口中进行判断
//如果只有部分功能依赖该服务,可在具体使用前进行判断
@Override
protected void onResume() {
    super.onResume();

    //获取GoogleApiAvailability的单例
    GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();

    //利用接口判断device是否支持Google Play Service
    int ret = googleApiAvailability.isGooglePlayServicesAvailable(this);

    //支持的话, 结果将返回SUCCESS
    if (ret == ConnectionResult.SUCCESS) {
        Log.d(TAG, "This phone has available google service inside");
    .............
    } else {
        Log.e(TAG, "This phone don't have available google service inside");

        //不支持时,可以利用getErrorDialog得到一个提示框, 其中第2个参数传入错误信息
        //提示框将根据错误信息,生成不同的样式
        //例如,我自己测试时,第一次Google Play Service不是最新的,
        //对话框就会显示这些信息,并提供下载更新的按键
        googleApiAvailability.getErrorDialog(this, ret, 0).show();
    }
}

4 利用Google API Client访问服务
当device支持Google Play Service时,应用就可以使用对应的功能了。

如下图所示,应用实际上必须使用Client Library中的Google API Client来访问具体的服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值