3
0

More than 3 years have passed since last update.

AndroidにおけるHMSのAPI Keyの二重定義の問題とその解決策

Last updated at Posted at 2020-09-06

HMSのAPIキー

ファーウェイ(Huawei)HMS(Huawei Mobile Services)プッシュキット(Push Kit)マップキット(Map Kit)など、複数のキッドより構成されています。特定なキッドを利用するのに、APIキーが必要です。

APIキーの場所

APIキーはAppGallery Connectの[Project Setting] -> [General Information]にあります。
AppGallery Connect - Project Setting.png

APIキーの導入とその問題点

通常、APIキーは次のように導入します。

MainActivity.kt
// たとえば、private val API_KEY = "CgB6e3x9iW/qiE9l9wAUPK0e/bJQe5uIgTlYUD4bPc8gzjriSVxDDzX2fAVjCVdUHkP+tan0Xi0sf4tj7t11TJJe"
private val API_KEY = "Your API key"

// マップキットを利用するケース
MapsInitializer.setApiKey(API_KEY)

または、次のようにように導入します

strings.xml
<!-- たとえば、<string name="api_key">CgB6e3x9iW/qiE9l9wAUPK0e/bJQe5uIgTlYUD4bPc8gzjriSVxDDzX2fAVjCVdUHkP+tan0Xi0sf4tj7t11TJJe</string> -->
<string name="api_key">Your API key</string>
MainActivity.kt
// マップキットを利用するケース
MapsInitializer.setApiKey(getString(R.string.api_key))

しかし、上記の導入方法ですと、APIキーを明示的にソースコードに記載しなければなりません。

HMSを利用するのに、agconnect-services.jsonをAppGallery Connectからダウンロードし、プロジェクトのappフォルダに置く必要があります。
Android Studio - Project.png
agconnect-services.jsonを開くと、client -> api_keyにAPIキーが載っています。
agconnect-services.png

これですと、APIキーが二重定義になってしまい、ソースコードとしてはあまりよろしくありません。

解決策

次のように書けば、APIキーの二重定義の問題が解決されるだけでなく、agconnect-services.jsonに載っているAPIキーをそのまま利用するので、APIキーの記載間違いも起きません。

MainActivity.kt
val api_key = AGConnectServicesConfig.fromContext(applicationContext).getString("client/api_key")

// マップキットを利用するケース
MapsInitializer.setApiKey(api_key)
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0