on 2017-05-12

web call native app

緣由

因為一些原因要 mobile web 可以 call native 的一些東西來分享當前頁面或幹啥事(其實最常用的是聯絡資訊點了直接 call native app)

眾所皆知 HTML5 預設有

  • mailto:
  • tel:
  • sms:

但每個都要個別寫入好麻煩 且 sms 還有 iOS 和 Android 格式不一樣的問題 於是失心瘋的寫了一個 object 整合一下

有空再寫 PHP 版 (但是需求好像偏向會從 PHP 出誒)

我前端工程師當然先寫 js 版 突然覺得 isomorphic 好好喔…

GitHub

webClientProtocol

題外話

關於 web share content 這件事 Google 有正在搞一個 web share api 可以針對你想分享的東西去做到複製到剪貼簿或把內容分享給可以使用的 mobile native app 但是還在測試狀態… 相關文章在底下

Introducing the Web Share API

題外話中的題外話

在早期會是用 Web Intents 去開 native app

但很麻煩, 且預設是不支持 iOS 的(因為這是 Android 上定義的

然後 iOS 早期要處理也是 native app 自己定義 protocol, 然後 web 自己用 native app 定義好的 protocol 去開

且要個別處理 failback 的行為

然後, 很麻煩的是不同的 native app 的 intent 寫法是不一樣的(因為要 call 的 app 的 package 都不一樣

iOS 亦是如此, 因為定義的 protocol 不一樣(廢話

一般早期是用來當 app link 用(當然現在很少這樣用了, 因為 app link 已經發展成熟了, 這又是另一件事了

順帶一提 iOS 目前最新的是 universal link

不過上述算是 app link 發展簡史, 沒有寫得很詳細

當然 Google 也發現 intent 不夠理想所以想要發展 share api 來達到真正的需求

share api 期望能達到像是 Android intent 所觸發的 share 的機制

當然就目前的情況 iOS 的支援應該還是遙遙無期

不過如果 iOS 的 Chrome 內部有個 interface 轉接去 call App Extension 也許就可以了(我的猜測

結語

目前做的這個功能是指支持 HTML5 原生的

如果是要像是要 call Line 或 twitter 或 fb 等等的請自己處理

有看到一個專案在記錄常用的 native app, 但我是沒試過就是了

Native app social interactions on mobile and tablet web