開始執行這些程序前,請先確認您已啟用適當的服務和 Consumer SDK,如先前章節所述。
如要初始化 Consumer SDK,請按照下列步驟操作:
取得 ConsumerApi
執行個體
如要使用 Consumer SDK,應用程式必須以非同步方式初始化單例項 ConsumerApi
。初始化方法會採用 AuthTokenFactory
類別,在必要時為使用者產生新的 JWT 權杖。
providerId
是您 Google Cloud 專案的專案 ID。如要進一步瞭解如何建立 Fleet Engine 專案,請參閱 Fleet Engine 指南中的「建立 Fleet Engine 專案」。
應用程式應實作 AuthTokenFactory
,如「Consumer SDK 驗證」一文所述。
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()
明確指定。
地圖 SDK 版本 | 支援最新轉譯器 | 支援舊版轉譯器 | 預設算繪器 |
---|---|---|---|
V18.1.0 以下版本 | 是 | 是 | 舊版* |
V18.2.0 | 是 | 是 | 最新 |
* 新版地圖轉譯器推出後,系統會預設使用最新版轉譯器。
如必須使用偏好的轉譯器,請在 OnMapsSdkInitializedCallback
傳回結果「後」執行所有 UI 轉譯作業。UI 算繪作業包括下列作業:
加載含有
GoogleMapView
或ConsumerMapView
的檢視區塊。在
ConsumerMapView
上放置標記。
如果收到 OnMapsSdkInitializedCallback
結果後未執行這些作業,地圖 SDK 就不會配置偏好的算繪器,而是使用預設算繪器算繪地圖檢視區塊。
先初始化 Maps SDK,再初始化 Consumer 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,請參閱「Security GMS Provider」。本文也包含修補安全性供應商的程式碼範例。