スポーツウォッチ(Lite Wearable)アプリの場合
スマホ側でWear Engine SDKのpingメソッドを使えば、指定したスポーツウォッチアプリを起動できます。
Androidの場合:
HiWear.getP2pClient(context)
.setPeerPkgName({スポーツウォッチアプリのパッケージ名}})
.ping(connectedDevice, object : PingCallback {
override fun onPingResult(errCode: Int) {
}
})
.addOnSuccessListener {
}
.addOnFailureListener { execption ->
}
iOSの場合:
HiWear.getP2PClient().ping(currentDevice, srcPkgName: {iOSアプリのパッケージ名}, destPkgName: {スポーツウォッチアプリのパッケージ名}) { status in
if status == .WESErrorCodeP2PWatchAPPRunning {
// pingが成功
} else {
// pingが失败
// エラーコードがstatus.rawValueに格納される
}
}
スポーツウォッチアプリのプロジェクトでは特別な設定がいりません。
スマートウォッチ(Wearable)アプリの場合
※JavaScript(ArkTSではない)によるスマートウォッチアプリを開発する場合
スマホ側ではスポーツウォッチアプリの場合と同じく、Wear Engine SDKのpingメソッドを使って、指定したスマートウォッチアプリを起動します。
Androidの場合:
HiWear.getP2pClient(context)
.setPeerPkgName({スポーツウォッチアプリのパッケージ名}})
.ping(connectedDevice, object : PingCallback {
override fun onPingResult(errCode: Int) {
}
})
.addOnSuccessListener {
}
.addOnFailureListener { execption ->
}
iOSの場合:
HiWear.getP2PClient().ping(currentDevice, srcPkgName: {iOSアプリのパッケージ名}, destPkgName: {スマートウォッチアプリのパッケージ名}) { status in
if status == .WESErrorCodeP2PWatchAPPRunning {
// pingが成功
} else {
// pingが失败
// エラーコードがstatus.rawValueに格納される
}
}
スマートウォッチアプリのプロジェクトについて、まずファーウェイWear Engine SDKの実装 - Lite WearableのプロジェクトをWearableのプロジェクトに変換する手順に従って、スマートウォッチアプリのプロジェクトを作ります。
次に、プロジェクトのsrc/main/config.jsonを下記のようにを編集します。
1. bundleNameとpackageの設定
bundleNameとpackageの値を同じものにします。
{
"app": {
"bundleName": "bundleNameとpackageの値を同じものにする",
...
},
"module": {
"package": "bundleNameとpackageの値を同じものにする",
...
}
...
}
2. typeとvisibleとlaunchTypeの設定
「type」に「page」を設定し、「visible」に「true」を設定し、「launchType」に「singleMission」または「singleton」を設定します。
{
"module": {
"abilities": [
{
"type": "page",
"visible": true,
"launchType": "singleMission"
...
}
],
...
}
...
}
ちなみに、HarmonyOSのlaunchTypeとAndroidのlaunchModeの対応関係は下記の通りです。
| HarmonyOS | Android |
|---|---|
| standard | standard |
| singleMission | singleTask |
| singleton | singleInstance |
3. metaDataの追加
次のように、metaDataを追加します。「value」にスマホアプリのパッケージ名を設定します。
もしぱパッケージ名が一つしかなければ、"value": "{パッケージ名}"になります。
{
{
...
"metaData": {
"customizeData": [
{
"name": "wearEngineRemoteAppNameList",
"value": "{Androidアプリのパッケージ名},{iOSアプリのパッケージ名}"
}
]
}
}
}