開始這些程序之前,請確認您已啟用適當的服務和 Consumer SDK,如前面各節所述。
如要初始化 Consumer SDK,請按照下列步驟操作:
取得 ConsumerApi
例項
如要使用 Consumer SDK,應用程式需要以非同步方式初始化單例 ConsumerApi
。初始化方法會使用 AuthTokenFactory
類別,在必要時為使用者產生新的 JWT 權杖。
providerId
是 Google Cloud 專案的專案 ID。如要進一步瞭解如何建立 Fleet Engine 專案,請參閱 Fleet Engine 指南中的「建立 Fleet Engine 專案」一節。
應用程式應依據「消費者 SDK 驗證」一節的說明導入 AuthTokenFactory
。
Java
Task<ConsumerApi> consumerApiTask = ConsumerApi.initialize(
this, "myProviderId", authTokenFactory);
consumerApiTask.addOnSuccessListener(
consumerApi -> this.consumerApi = consumerApi);
Kotlin
val consumerApiTask =
ConsumerApi.initialize(this, "myProviderId", authTokenFactory)
consumerApiTask?.addOnSuccessListener { consumerApi: ConsumerApi ->
this@YourActivity.consumerApi = consumerApi
}
Maps SDK 和地圖轉譯器
Consumer SDK 2.0.0 以上版本支援 Maps SDK for Android 18.1.0 以上版本。下表列出 Maps SDK 版本的預設轉譯器,以及兩個轉譯器的支援性。盡可能使用最新的轉譯器。如果您必須使用舊版轉譯器,請使用 MapsInitializer.initialize()
明確指定轉譯器。
Maps SDK 版本 | 支援最新轉譯器 | 支援舊版轉譯器 | 預設轉譯器 |
---|---|---|---|
18.1.0 以下版本 | 是 | 是 | 舊版* |
V18.2.0 | 是 | 是 | 最新 |
* 隨著新版地圖轉譯器的推出,最新轉譯器將成為預設轉譯器。
如果您必須使用偏好的轉譯器,請在 OnMapsSdkInitializedCallback
傳回結果後執行所有 UI 轉譯作業。UI 算繪作業包括下列作業:
加載包含
GoogleMapView
或ConsumerMapView
的檢視區塊。在
ConsumerMapView
上放置標記。
如果您在收到 OnMapsSdkInitializedCallback
結果後未執行這些作業,地圖 SDK 就不會分配您偏好的轉譯器,而是由預設轉譯器轉譯地圖檢視畫面。
在初始化 Consumer SDK 前,先初始化 Maps SDK
在
Application
或啟動Activity
類別中,呼叫 MapsInitializer.initialize()請等待轉譯器要求結果,再初始化 Consumer SDK。
詳情請參閱下列範例。
Java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initViews();
MapsInitializer.initialize(getApplicationContext(), Renderer.LATEST,
new OnMapsSdkInitializedCallback() {
@Override
public void onMapsSdkInitialized(Renderer renderer) {
switch (renderer) {
case LATEST:
Log.i("maps_renderer", "LATEST renderer");
break;
case LEGACY:
Log.i("maps_renderer", "LEGACY renderer");
break;
}
initializeConsumerSdk();
}
});
}
Kotlin
fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
initViews()
MapsInitializer.initialize(
getApplicationContext(), Renderer.LATEST,
object : OnMapsSdkInitializedCallback() {
fun onMapsSdkInitialized(renderer: Renderer?) {
when (renderer) {
LATEST -> Log.i("maps_renderer", "LATEST renderer")
LEGACY -> Log.i("maps_renderer", "LEGACY renderer")
}
initializeConsumerSdk()
}
})
}
SSL/TLS 相關注意事項
在內部,Consumer SDK 實作會使用 SSL/TLS 與 Fleet Engine 服務安全地通訊。Android API 23 以下版本可能需要 SecurityProvider
修補程式才能與伺服器通訊。如要進一步瞭解如何在 Android 中使用 SSL,請參閱「安全性 GMS 供應器」。本文也包含用於修補安全性提供者的程式碼範例。