本文档介绍了如何开始在 Android 上使用附近分享消息 API 进行开发。Nearby Messages API 是 Google Play 服务的一部分。
第 1 步:获取 Google Play 服务
Nearby Messages API 适用于搭载 7.8.0 或更高版本 Google Play 服务的 Android 设备。搭载 Android 2.3 或更高版本且安装有 Google Play 商店应用的设备会自动收到 Google Play 服务的更新。如需查看设备上安装了哪个版本的 Google Play 服务,请依次前往设置 > 应用 > Google Play 服务。
确保您的开发主机上安装了最新的 Google Play 服务客户端库:
- 打开 Android SDK 管理器。
在 Appearance & Behavior > System Settings > Android SDK > SDK Tools 下,确保已安装以下软件包:
- Google Play 服务
- Google 代码库
第 2 步:获取 Google 账号
如需使用 Nearby Messages API,您需要拥有一个 Google 账号。这样,您(开发者)就可以在下一步中启用 Nearby API(您的用户无需拥有 Google 账号)。如果您已经拥有账号,则无需进行任何操作。您可能还需要一个用来测试的单独 Google 账号。
第 3 步:获取 API 密钥
请按照以下步骤启用适用于 Android 的 Google Nearby Messages API 并获取 API 密钥:
- 前往 Google Developers Console。
- 创建或选择一个项目来注册您的应用。
- 点击继续以启用该 API。
- 在凭据页面上,创建新的 Android 密钥(并设置 API 凭据)。
注意:如果您已有 Android 密钥,可以使用该密钥。 - 在随即显示的对话框中,输入应用的 SHA-1 指纹和软件包名称。例如:
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
com.example.android.nearbyexample
- 新的 Android API 密钥会显示在项目的 API 密钥列表中。API 密钥是类似于如下的字符串:
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
获取证书的 SHA1 指纹
如需为 Android 应用创建新的 API 密钥,您需要提供用于为 APK 签名的证书的 SHA1 指纹。消息只能在使用来自同一项目的 API 密钥签名的应用之间交换。
如需获取此指纹,请执行以下操作:
- 找到密钥库的位置。
- 在终端中,从 JDK 运行
keytool
实用程序。例如,如果您使用的是`debug`
密钥库: keytool
命令的输出包含证书的 SHA1 指纹。
$ keytool -alias \ androiddebugkey -keystore \ ~/.android/debug.keystore -list -v
注意:调试密钥库的密码为 android
。在 Mac OS 和 Linux 上,调试密钥库通常位于 ~/.android/
。在 Windows 上,它通常位于 %USERPROFILE%\
。
第 4 步:配置项目
借助 Android Studio,您可以轻松为附近消息 API 创建项目。按照创建项目中所述的步骤创建新项目。在 Android Studio 中,打开模块的 build.gradle
文件,并将 Google Play 服务客户端库添加为依赖项:
apply plugin: 'android' ... dependencies { compile 'com.google.android.gms:play-services-nearby:19.3.0' }
然后,使用在上一步中生成的 API 密钥配置清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.sample.app" >
<application ...>
<meta-data
android:name="com.google.android.nearby.messages.API_KEY"
android:value="API_KEY " />
<activity>
...
</activity>
</application>
</manifest>
第 5 步:发布和订阅
在您的应用中,开始使用 Nearby Messages API。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
Log.d(TAG, "Found message: " + new String(message.getContent()));
}
@Override
public void onLost(Message message) {
Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
}
}
mMessage = new Message("Hello World".getBytes());
}
@Override
public void onStart() {
super.onStart();
...
Nearby.getMessagesClient(this).publish(mMessage);
Nearby.getMessagesClient(this).subscribe(mMessageListener);
}
@Override
public void onStop() {
Nearby.getMessagesClient(this).unpublish(mMessage);
Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
...
super.onStop();
}
使用 Nearby Messages API 需要征得用户同意。首次调用 publish 或 subscribe 时,附近分享会显示一个选择接受对话框。