スマホのブラウザでリンクをタップした際にビットコインのウォレットアプリを起動する方法

f:id:akase244:20170512014528j:plain

こんにちは、warikanというビットコインで割り勘ができるツールの開発をしている@akase244です。

ビットコインのウォレットアプリで送金してもらいたい場合、よくある方法としてはQRコードをウォレットアプリのQRコードリーダー機能で読み込んでもらう方法があります。

こうすることで、ウォレットアプリ上でビットコインアドレスと金額がセットされ、あとは送金ボタンを押すだけの状態になります。

今回はwebページ内のリンクをタップした際にQRコードを読み込んだ場合と同様にビットコインのウォレットアプリを起動して、送金ボタンを押すだけの状態にできないかを調査してみました。

結論から言うと、リンクからウォレットアプリを起動することはできます。

具体的には以下のようにaタグのhref属性でbitcoinスキームにビットコインアドレスを指定し、付加情報としてamountに金額(BTC)を与えます。金額には小数点の指定が可能でカンマは不可となっています。

<a href="bitcoin:msvDYTmBQV7D9AtkZa4vYuGHh3mkdwpZiF?amount=0.01">アドレスと金額を指定してウォレットアプリを起動する</a>

※記載しているビットコインアドレスはTestnet環境で発行したアドレスです

なお、スキームとパラメータの詳しい情報については、ここに掲載されています。

では、実際にスマホで↑のリンクをタップしてみた際の様子を見てみましょう。

リンクをAndroidでタップした場合
f:id:akase244:20170512005640j:plain:w300
※Androidでは複数のウォレットアプリがインストールされている場合は複数のアプリの中から選択可能となっています

AndroidでBitcoin Wallet for Testnetを開いた場合(アプリが起動するとビットコインアドレスと金額がセットされています)
f:id:akase244:20170512010721j:plain:w300

リンクをiOSでタップした場合
f:id:akase244:20170512003710j:plain:w300
※iOSでは複数のウォレットアプリがインストールされていても選択肢は一つ(アプリ名のアルファベット順で1件目に該当するアプリのようです)しか表示されません

iOSでCopayを開いた場合(アプリが起動するとビットコインアドレスと金額がセットされています)
f:id:akase244:20170512010329j:plain:w300

いかがでしたか。HTMLの知識だけでビットコインのウォレットアプリとの送金連携が簡単に実現できることがおわかりいただけたのではないでしょうか。

しかしながら、iOSとの連携の部分で説明したとおり、もし複数のウォレットアプリをインストールしている場合は、「いつも使っているウォレットアプリが選択できないかもしれない」という問題を含んでいるため、このリンクのタップによるアプリ連携が必ずしもユーザーフレンドリーではない可能性があります。

また、PCのブラウザでこのリンクをクリックした際には無反応状態となるので「不具合かな?」と勘違いされることもあるでしょう。

このあたりの状況を踏まえて、PCとスマホの場合でUIを変更したり、iOSの場合に限り注意書きを表示したりといった、この機能を利用する側への配慮をまず検討した方がよさそうですね。