LoginSignup
0
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!

Web サイトのリンクと QR Code で SMS を起動する際の問題点について

Posted at

SMS を Web サイトのリンクと QR Code で起動する方法についてのまとめと、それに対する問題点を残す

結論

Web サイトの Link で SMS を起動する場合 Delimiter が異なることに注意する

  • Android: sms:<電話番号>?body=<URIエンコードされたメッセージ>
  • Android 以外: sms:<電話番号>&body=<URIエンコードされたメッセージ>

QR Code で SMS を起動する場合はエンコードしない

  • QR Code: smsto:<電話番号>:<メッセージ>

ただし Android の端末デフォルトアプリである スキャナー で QR Code よ読み込む際は国番号(+81)が利用できない
そこに対応したい場合は sms: を利用することになるが body に : があると正常にメッセージが展開されない可能性があることに注意が必要

検証に用いた情報

宛先

  • 国番号有り: +819000000000
  • 国番号無し: 09000000000

メッセージ

テストメッセージです
改行も入っています。
URL (https://localhost/testurl)
長文用パディング長文用パディング長文用パディング長文用パディング長文用パディング長文用パディング長文用パディング長文用パディング長文用パディング

URI Scheme

SMS起動するURI Schemeとして下記の2つを試した

  • sms:
  • smsto:

sms: の問題点

body を指定するための Delimiter が異なる

WebサイトのLinkとする場合にメッセージ付きの SMS の起動がそれぞれ下記で行えた。

  •  Mac/iPhone: sms:<電話番号>&body=<URIエンコードされたメッセージ>
  •  Android: sms:<電話番号>?body=<URIエンコードされたメッセージ>

つまり Android の Delimiter は ? だが、それ以外では & となるため User-Agent 等で分岐する必要がある

QR Code では指定できない場合がある

QR Code で sms: を指定したものを iPhone で読み込んだ場合に : が body に含まれる場合に正常にメッセージとして展開されない

メッセージ展開エラー.PNG

利用した QR Code は下記となる。(未検証だが Android 用も添付する)

iPhone 用
iPhone用URL付きQR Code.png

Android 用
Android用URL付きQR Code.png

smsto: の問題点

HTML の a タグの href 属性で指定できない

Web サイトのリンクとして利用したい場合には通常 HTML の a タグの href 属性に指定するが Mac の Google Chrome と iPhone の Google Chrome の両方で起動することができないことを確認

hrefでsmstoを指定できない.png

国番号を指定すると QR Code から開けない場合がある

Android のデフォルトアプリである スキャナー で読み込むと、国番号有りの宛先の場合にテキストとして読み込まれる問題がある
Googleレンズ等の別のアプリで読み込んだ場合は問題なく開けるため、スキャナーのバグ?のようなものなのでよほどのことがなければ気にする必要は無いかもしれない

国番号有りの宛先
国番号有り.png

国番号無しの宛先
国番号無し.png

0
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
0
0