我想使用 Google 的 Nearby Messages API 发布一条简单的消息,并且我只想使用 BLE,这样就不需要 Nearby Permissions 对话框。我MessagesClient
只用NearbyPermissions.BLE
标志创建我的:
private MessagesClient messagesClient(Context context) {
return Nearby.getMessagesClient(context, messageOptions());
}
private MessagesOptions messageOptions() {
return new MessagesOptions.Builder()
.setPermissions(BLE)
.build();
}
public void publish(Context context) {
mMessagesClient = messagesClient(context);
mMessagesClient
.publish(mMessage) // publish without any PublishOptions
.addOnSuccessListener( // ... )
}
我故意不设置任何PublishOptions
对象,因为文档明确指出Strategy.BLE
应该仅用于订阅,因为它具有无限 TTL。但是,消息失败并显示以下错误消息:
2807: Missing microphone permission
我尝试对 API 进行一点逆向工程,并使用默认 TTL 为 BLE 创建一个自定义策略对象,但我得到了一个2806: FORBIDDEN
错误:
private PublishOptions publishOptions() {
return new PublishOptions.Builder()
.setStrategy(strategy())
.build();
}
private Strategy strategy() {
return new Strategy.Builder()
.zze(2)
.setTtlSeconds(TTL_SECONDS_DEFAULT)
.build();
}
为什么即使我已明确请求仅 BLE 权限,API 仍需要麦克风权限?(顺便说一句,授予了精细的位置权限)。