如何在使用者點擊 Notification 通知後,傳遞參數給 App?

notification bar

當使用者從 Firefox OS 手機收到一封新簡訊,在點下 Notification Bar 的簡訊通知後,預載的 SMS App 就會被啟動,但你知道在此過程中,預載的 SMS App 是如何切換到正確的簡訊串列來顯示簡訊內容的呢?

首先,使用 navigator.mozNotification.createNotification 可以在 Notification Bar 中加入一個 notification 通知。下面是建立一個 notification 通知的範例程式碼:

接下來,就是需要傳遞電話號碼參數給 SMS App,讓它知道要開啟哪個電話號碼的簡訊串。很可惜的,在使用 createNotification 函式建立 notification 時並沒有提供傳遞參數的機制。

讓我們來用 hacking 的方式來達成這個任務吧。我們可以在使用 createNotification 函式時,利用函式中的 iconURL 參數來傳遞電話號碼給 SMS App。iconURL 是一個圖示的 URL,它的值可能會是這樣:app://sms.gaiamobile.org/icon.png
而下面是 createNotification 函式的 Spec:

接下來,在 iconURL 最後面先加入一個 ?,再把電話號碼放在 iconURL 參數的後面,像是這樣:
app://sms.gaiamobile.org/icon.png? 886933123456

這樣在 SMS App 在接收到 notification 的 オンライン ブラックジャック system message 後,就可以在 navigator.mozSetMessageHandler 註冊的 callback 函式拿到電話號碼。下面是 SMS APP 接收電話號碼的範例程式碼:

奇妙的事發生了,這樣就可以了,耶!

以上是一個 hacking 的做法,始終不是一個長久之計啊。我們來參考一下 W3C Web Notifications 的標準吧。大家可以看到有一個 tag 的參數,在 SMS App 的例子中,我們可以用它來傳遞電話號碼給 SMS App,像是這樣:

接下來,Firefox OS 當然會支援 Web Notifications 的標準(code 已經準備好了,就等 land 進去啦),之後我們就不用再這麼 hack 了。好,謝謝大家。:)

參考資料:

 

 

您可能也會喜歡

目前找不到相關文章

對此文章發表回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *