x-callback-urlを使ってみた
x-callback-urlとは?
iOSのアプリ間連携の仕様の一つみたいです。簡単に言うと、ディープリンクを行うためにカスタムURLスキームを利用するが、アプリ毎にバラバラな規則でURLスキームを設定するとアプリ間連携をスムーズに行うことができないため、どのような規則でURLスキームを設定するかを仕様としてまとめたのが、x-callback-urlみたいです。
iOSのディープリンク周りだと、AppleWWDC2015でApp Searchという機能が発表されてました。
詳しく読んでませんが、Google検索用AppIndexing(https://developers.google.com/app-indexing/webmasters/?hl=ja)みたいな感じなのかなと思います。
Androidは?
x-callback-urlはiOS用の仕様のため、Androidも同じものがないか調べてみましたが見つからず。。。
厳密には違いますが、Android版は、さきほど登場したGoogle検索用AppIndexingでしょうか。
知っている人がいたら教えてください。
そもそもAndroidは、アプリからintentで別アプリを起動しても、戻るボタンでアプリに戻ることができるので、
そこまでの機能が必要ないのかもしれないです。
ただし、x−callback−urlで規定されているようなインターフェースは、
アプリ毎に異なってしまうため、同じような仕様が必要な気がします。
アプリの対応状況は?
そんなx-callback-urlですが、対応しているアプリは以下の通りです。
http://x-callback-url.com/apps/
有名どころだと、Evernote / Google Chrome / Google Maps / Tumblr for iOS / クックパッドのアプリが対応しているみたいです。
ちなみにFacebookやTwitterは、独自仕様です。
Facebook
https://developers.facebook.com/docs/applinks/overview
Twitter
https://dev.twitter.com/ja/cards/mobile
使ってみる
iOS版Chromeが対応しているということで、サンプルアプリを作って連携させてみました。
Opening links in Chrome for iOS
https://developer.chrome.com/multidevice/ios/links#enabling-a-callback-with-x-success
GoogleChrome/OpenInChrome
https://github.com/GoogleChrome/OpenInChrome.git
このgitに上がっているサンプルアプリのソースを元にswiftで写経しました。
ソースはここにあげました。
https://github.com/takuhou/x-callback-url
アプリのキャプチャはこんな感じ。
※なぜがアプリ名が表示されずnullになりました。
無事アプリからChromeを起動して、またアプリに戻ってこれました。
で、x−callback−urlの仕様はこんな感じ。
x−callback−url
1 |
[scheme]://[host]/[action]?[x-callback parameters]&[action parameters] |
1 |
scheme:アプリ毎のURLスキーム |
1 2 3 |
host:[x-callback-url]を指定 action:遷移先アプリでのアクション x-callback parameters |
1 2 3 4 |
x-source:遷移元のアプリ名(遷移先のアプリで表示するのが親切でいいそうです) x-success:遷移元のURLスキーム+パラメータなど x-error:遷移先のアプリの起動が失敗した場合に起動するURLを定義? x-cancel:ユーザーによってアクションがキャンセルさせた場合に起動するURLを定義? |
1 |
action parameters:遷移先アプリ固有の処理を行うアクション |
Chromeのx−callback−url
1 |
googlechrome-x-callback://x-callback-url/open/?x-source=(null)&url=http%3A%2F%2Fwebdemo.dac.co.jp%2Finfeed%2Finfo.html&x-success=myapp%3A%2F%2F&create-new-tab |
考察
Facebook/Twitterは独自仕様、x−callback−urlという仕様が存在し、App Searchもあり、AppIndexingもあり、
ウェブtoアプリやアプリtoウェブも考えなければいけない。
これらを差分をまるっと吸収してくれる、ワンディープリンクソリューションがあれば嬉しいと思ったのは、
僕だけではないはずです。
というか既にあると思うので調べたほうがいいですね。
後、x-callback-urlを実装しているライブラリがあるので、これを使うと便利みたいです。
https://github.com/tapsandswipes/InterAppCommunication
x-callback-url対応アプリのIF
Evernote
https://github.com/evernote/evernote-ios-x-callback-url
GoogleMaps
https://developers.google.com/maps/documentation/ios/urlscheme
Tumblr for iOS
https://github.com/tumblr/TMTumblrSDK#url-schemes

関連記事
-
-
最強のSQLクライアント(GUIツール)「TeamSQL」を使ってみた!
はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 エンジニアの皆さん、SQLクライアント(GUIツール)って何使ってます? わたくしはこ …
-
-
ゼロからAngularでSPAを作ってみた(1) はじめてのアプリ編
はじめに Single Page Application (SPA)って知っていますか? Webサイトでコンテンツのリンクをクリックした時に妙に表示が早いな〜というとき、実はページを移動するのではなくてページの一部のみを書き換えていたりします。 こういったサイトの作り方を Single Page A …
-
-
いまさらですが… GNU screen チートシート
最近はローカル環境で開発するようになってきたので、screen コマンドを使う機会も少なくなって来たような気がします。で、使ってないと忘れてしまうので、チートシートを作ってみました。 参照サイト GNU screen [quick_reference] 起動 コマンド 動作 screen -S &l …
-
-
意外と知らないかも? Chrome DevTools の機能10選
みんな使っている Chrome DevTools。 Web開発やトラブルシューティングには必須ですが、便利な機能を知らないで使っている人がいたり、Web で使い方を調べても古い情報だったりすることがあるので、部内で Chrome DevTools についての勉強会を開催しました。 ここでは、その中か …
-
-
Selenium × PHP でテスト自動化!【環境構築編】
はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 テスト自動化の背景 わたくしが担当するXmediaOneでは品質担保のために①コードベ …
-
-
modern.IEを使ってMac上でWindows10を動かす
Microsoftが提供している modern.IE というプロジェクトがある。そこで提供されている仮想環境を使って、MacにWindows10をインストールしてみる。ちなみに、このプロジェクトの本来の目的はInternet Explorerの表示確認やデバッグの支援。 VirtualBoxの準備 …
-
-
【HTML5】4ツール出力ファイルサイズ比較
こんにちは、近江です。 前回もHTML5のSwiffyについて書かせて頂きましたが、まだまだHTML5について調査しています。 今回はSwiffyを含めた4つのHTML5系ツールで、同じ素材で同じアニメーションを作成した時のファイルサイズを比較したいと思います。 何故ファイルサイズの比較をするかと言 …
-
-
Vagrantの機能を使って開発環境の効率をあげてみた。
プラットフォーム・ワンのシステムの運用・保守担当のエンジニアです。 保守の仕事に関わると、 ユーザからのお問い合わせだったり、監視アラートによる検知から システムを調査することがあります。 ログとソースコードを見て、不具合を特定し改修する。 すぐできればカッコいいですが、 「本番環境に反映して別のエ …
-
-
【小ネタ】タスク管理ツール移行: Trello から Asana
プロジェクトチームのタスク管理ツールを Trello から Asana に変えることになり、 タスクの移行が意外と簡単にできた、というお話です。 Trello と Asana もともと使っていたのは Trello(トレロ)です。 プロジェクト > タスクグループ > タスク …
-
-
AWSにRailsアプリをデプロイする(公開編)
次にデプロイするため“aws rails デプロイ”でググってみるとunicorn、nginxというキーワードがでてくるので とりあえずこれを設定していきます。 アプリのsecret_key_baseの設定 [crayon-62bc86cbd6505731047 …