H5營銷場景下,電子印章技術的實現(xiàn)與思考??

背景

周末在家呆著無聊刷小??的過程時河质,無意中被推薦了一個H5的營銷方案所吸引:利用電子印章結合H5頁面結合的方式冀惭,實現(xiàn)線上+線下的拓客引流震叙。形式如下圖所示。

image.png

雖然這種電子印章的形式不是第一次見到散休,但看到真的有人在專營這方面的營銷方案媒楼,著實激起了我的好奇心。雖然之前沒做過這方面的業(yè)務戚丸,但是作為偽資深の二次元划址,這個交互方式我熟啊! 這不就是Amiibo么,現(xiàn)在瀏覽器/微信對NFC都支持到這個程度了么限府?好奇心促使我開始著手探究視頻中的實現(xiàn)方案夺颤。

探索方案

【初探】NFC API

首先,我先查詢了下NFC API的MDN介紹Web NFC API 允許通過輕量級 NFC 數(shù)據(jù)交換格式 (NDEF) 消息在 NFC 上交換數(shù)據(jù)谣殊。 部分瀏覽器支持,仍是一項實驗性的能力牺弄,文檔建議使用前查一下對應的瀏覽器兼容性表姻几。

看一下目前API支持的能力:

API 功能
NDEFMessage 表示可以通過NDEFReader對象從兼容標簽接收或發(fā)送到兼容標簽的 NDEF 消息的接口。消息由元數(shù)據(jù)和 NDEF 記錄組成势告。
NDEFReader (實驗性) 支持從兼容的 NFC 標簽讀取和寫入消息的接口蛇捌。消息表示為NDEFMessage對象。
NDEFRecord 表示可以包含在 NDEF 消息中的 NDEF 記錄的接口咱台。
/** API 示例使用方式 讀寫案例 **/
async function readTag() {
  if ("NDEFReader" in window) {
    const ndef = new NDEFReader();
    try {
      await ndef.scan();
      ndef.onreading = event => {
        const decoder = new TextDecoder();
        for (const record of event.message.records) {
          consoleLog("Record type:  " + record.recordType);
          consoleLog("MIME type:    " + record.mediaType);
          consoleLog("=== data ===\n" + decoder.decode(record.data));
        }
      }
    } catch(error) {
      consoleLog(error);
    }
  } else {
    consoleLog("Web NFC is not supported.");
  }
}

async function writeTag() {
  if ("NDEFReader" in window) {
    const ndef = new NDEFReader();
    try {
      await ndef.write("What Web Can Do Today");
      consoleLog("NDEF message written!");
    } catch(error) {
      consoleLog(error);
    }
  } else {
    consoleLog("Web NFC is not supported.");
  }
}

function consoleLog(data) {
  var logElement = document.getElementById('log');
  logElement.innerHTML += data + '\n';
}

案例參考 https://whatwebcando.today/nfc.html
络拌。同時,MDN 上還附帶著 Web NFC 的實現(xiàn)標準回溺〈好常看著這些能力實現(xiàn)一個觸碰蓋章的能力感覺綽綽有余啊。

不對遗遵,它是不是還讓我查看兼容性來著萍恕?

[圖片上傳失敗...(image-4bea68-1680960959238)]
[圖片上傳失敗...(image-ff02d4-1680960959238)]

看完之后,直呼好家伙车要! 這實驗性的范圍也太局限了基本只支持了Chrome 89之后 以及個別瀏覽器允粤。基本處于一個不能上生產的情況翼岁,這似乎和我的預期相距甚遠类垫,我陷入了短暫的思考。

補充一句琅坡,當然我也看了下微信對于近場通信的支持:支持 HCE(基于主機的卡模擬)模式悉患,即將安卓手機模擬成實體智能卡。 支持 NFC 讀寫榆俺,即手機作為讀卡器使用购撼。同樣是不符合對這一能力的預期的跪削。

【回首】WEB API:Multi-touch interaction

在首輪沒有想到解決方案的情況下,我查看了下營銷團隊的官網(wǎng)迂求,也就是這一看讓這個探究過程出現(xiàn)了轉機碾盐。我發(fā)現(xiàn)這個業(yè)務場景的適用范圍是:任何場景,微信揩局、App毫玖、網(wǎng)站都可以執(zhí)行。所以它應該是一個相對通用的方案凌盯,不會受到平臺付枫、兼容性等因素的影響。所以驰怎。阐滩。。會不會是县忌?同時記錄了多個觸摸點 或者 繪制了某個特殊圖形掂榔?

復習一下Touch的相關API:

API 功能
TouchEvent 表示位于表面上的一個觸摸點的某個狀態(tài)發(fā)生改變時產生的事件。
Touch 表示用戶與觸摸表面間的一個單獨的接觸點症杏。
TouchList 表示一組 Touch装获,用于多點觸控的情況。

看起來似乎可行厉颤,無論是MDN Touch的介紹穴豫,還是 TouchList 的介紹,都證明記錄同時觸摸點是完全可行的逼友。又看了下 Touch Events # dom-touchlist-length實現(xiàn)確實可以拿到每個觸摸點的位置精肃,那么現(xiàn)在只需要判斷,繪制的點/形狀是否符合標準就可以了帜乞。

此時剛好看到一位前輩的文章肋杖,他也是通過Touch的相關能力實現(xiàn)的,詳細介紹了電子印章的實現(xiàn)挖函,以及向量對比時的一些方案状植。個人覺得很牛逼,我就不做無用功了怨喘,這里簡單摘錄一些他的過程此處附上他的github 津畸, (侵刪哈):


H5印章實體大概就是有一些圓點凸起的方塊,每個凸起的地方使用導電橡膠材料制作(類似電容筆)必怜,這樣平整放置在屏幕上時就能在屏幕上形成多個觸控點肉拓,模擬 手指多點觸控的交互。

image.png

在給用戶蓋印的過程中(采集新的點位信息)梳庆,會存在一些不確定性

  • 因為需要通過手機屏幕采集觸摸點暖途,而不同型號的手機屏幕尺寸/分辨率都存在差異卑惜,同一個印章蓋上去,每次拿到的坐標數(shù)都有可能不同
  • 每次蓋章時驻售,章的方向和手機的方向可能會有所不同

基于以上幾點露久,我們計算相似性的算法就要忽略點位整體的方向和絕對尺寸。也就是證相似而不是全等欺栗。

image.png

github文章后續(xù)使用 余弦相似性 和 差值相關性 的方法通過向量解決了 點 => 圖形 的相似問題毫痕,有興趣的朋友可以到上/下面的文章鏈接中詳細了解,我這里就不蹭方案了迟几。當然證明向量的相似的方案不完全固定消请,穩(wěn)定且效率高的方案可以由感興趣的朋友自行探索,本篇文章就不做多余擴展了类腮。同時也附上一些方案的鏈接拋磚引玉臊泰。

后來,我在營銷團隊的官網(wǎng)上也發(fā)現(xiàn)了多點觸碰的專利等字樣蚜枢,相關實現(xiàn)方案也就不言而喻了缸逃。

【終局】一點思考

寫到這,電子印章的技術實現(xiàn)就已經(jīng)基本結束祟偷。前端通過巧妙技術實現(xiàn)助力了更加豐富的營銷場景察滑,從而實現(xiàn)技術業(yè)務雙贏打厘⌒蕹Γ回顧此次探索的過程,其實是一次完整的輸入 => 校驗的過程户盯,在不同場景下我們接觸過許多的輸入方式嵌施,無論是屏幕點擊、符箓繪制莽鸭、圖片識別 亦或是 言出法隨都能給用戶耳目一新的感覺吗伤。當然,也希望本篇文章的拋轉能夠給各位鐵子更多的實現(xiàn)思路與前端學習的動力硫眨。

image.png

參考文章

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末足淆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子礁阁,更是在濱河造成了極大的恐慌巧号,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姥闭,死亡現(xiàn)場離奇詭異丹鸿,居然都是意外死亡,警方通過查閱死者的電腦和手機棚品,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門靠欢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來廊敌,“玉大人,你說我怎么就攤上這事门怪÷獬海” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵薪缆,是天一觀的道長秧廉。 經(jīng)常有香客問我,道長拣帽,這世上最難降的妖魔是什么疼电? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮减拭,結果婚禮上蔽豺,老公的妹妹穿的比我還像新娘。我一直安慰自己拧粪,他們只是感情好修陡,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著可霎,像睡著了一般魄鸦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上癣朗,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天拾因,我揣著相機與錄音,去河邊找鬼旷余。 笑死绢记,一個胖子當著我的面吹牛,可吹牛的內容都是我干的正卧。 我是一名探鬼主播蠢熄,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼炉旷!你這毒婦竟也來了签孔?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤窘行,失蹤者是張志新(化名)和其女友劉穎饥追,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抽高,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡判耕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了翘骂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壁熄。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡帚豪,死狀恐怖,靈堂內的尸體忽然破棺而出草丧,到底是詐尸還是另有隱情狸臣,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布昌执,位于F島的核電站烛亦,受9級特大地震影響,放射性物質發(fā)生泄漏懂拾。R本人自食惡果不足惜煤禽,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岖赋。 院中可真熱鬧檬果,春花似錦、人聲如沸唐断。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脸甘。三九已至恳啥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丹诀,已是汗流浹背钝的。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留忿墅,地道東北人扁藕。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓沮峡,卻偏偏與公主長得像疚脐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子邢疙,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容