H5網頁喚醒app,判斷app安裝

在閱讀本文以前你首先應該對js有基本對掌握,而且對Scheme,intent有必定的理解。更多的是代碼

上午給朋友作了一個產品引導頁,可是須要判斷ios系統的TestFlight是否安裝,進行了google一下發現了callapp-lib庫ios

頗有效的解決了這個問題,可是並非很完美,我也沒有找到很完美的解決這個問題,包括我在本文所說的,只是一種很不入流的方式,可是仍是有效的,git

兼容狀況就不說了,不考慮~,主要是就是喚醒你須要的軟件。github

callapp-lib
這裏利用了別人的庫,能夠省略部分代碼,`callapp-lib`能夠直接喚醒app,以及喚醒失敗的`callback`,可是你得傳入Scheme。

`callapp-lib`庫可能有一點問題,我也沒有理解透徹,它並不給你提供喚醒成功`callback`的功能,因此須要咱們本身補足。
文檔:callapp-lib

import CallApp from 'callapp-lib'
const option = {
    scheme: {
        protocol: 'itms-beta',
    },
    outChain: {
        protocol: 'itms-beta',
        path: '',
    },
    appstore: 'http://www.apple.com',
    yingyongbao: 'http://www.zhihu.com',
    fallback: 'https://www.baidu.com',
    timeout: 3000,
};
const lib = new CallApp(option);
const callButton = document.querySelector('#call-button');
callButton.addEventListener('click', () => {
    vm.is_show = 1
    this.$toast.loading({
        mask: true,
        message: '加載中...'
    });
    lib.open({
        path: '/text',
        callback: function () {
            vm.is_show = 0
            self.$toast.fail('打開TestFlight失敗,請先下載支持軟件TestFlight');
            return false
        },
    
    });
});

 

  




檢測網頁是否被切到後臺運行,並監聽該事件
`is_show` 是爲了阻止重複加載
APP 若是被喚起的話,頁面就會進入後臺運行,會觸發頁面的 visibilitychange 事件。若是觸發了,則代表頁面被成功喚起,支持callback,若是失敗的話就會觸發前面`callapp-lib`咱們傳入的失敗callback
 var hidden, state, visibilityChange;
if (typeof document.hidden !== "undefined") {
    hidden = "hidden";
    visibilityChange = "visibilitychange";
    state = "visibilityState";
} else if (typeof document.mozHidden !== "undefined") {
    hidden = "mozHidden";
    visibilityChange = "mozvisibilitychange";
    state = "mozVisibilityState";
} else if (typeof document.msHidden !== "undefined") {
    hidden = "msHidden";
    visibilityChange = "msvisibilitychange";
    state = "msVisibilityState";
} else if (typeof document.webkitHidden !== "undefined") {
    hidden = "webkitHidden";
    visibilityChange = "webkitvisibilitychange";
    state = "webkitVisibilityState";
}
document.addEventListener(visibilityChange, function () {
  // eslint-disable-next-line
  //這裏判斷不要重複下載
    if (vm.is_show == 1) {
      vm.is_show = 0
      alert('正在下載');
      location.reload()
    }

}, false);

 

原創不易,轉載請附上原文出處連接,謝謝原文連接:https://lihengc.github.io/2019/09/24/H5%E7%BD%91%E9%A1%B5%E5%94%A4%E9%86%92app-%E5%88%A4%E6%96%ADapp%E5%AE%89%E8%A3%85/
相關文章
相關標籤/搜索