簡體   English   中英

如何強制網頁脫離本機移動應用程序?

[英]How can I force a web page to break out of a native mobile app?

我有一個正在從本機應用程序的Webview中查看的網頁,此網頁包含元素。 文件輸入在Web瀏覽器中可以正常工作,但在應用程序中則無法工作(iPhone和Android上的不同問題)。

該應用程序已經發布,我真的不想更新該應用程序的本機部分。

理想的解決方案是將Java腳本添加到可以檢測到該腳本在應用程序內部運行的網頁,然后使用URL啟動瀏覽器(在應用程序外部)。

這有可能嗎?

如果您的應用覆蓋了Webview使用的默認用戶代理,則有可能。 默認情況下,Webview的用戶代理與默認瀏覽器的用戶代理相同。 因此,您沒有任何方法可以區分它們。 如果您的應用覆蓋了useragent,那么您可以使用javascript嗅探useragent並根據此采取措施。 理想的解決方案是嘗試通過html修復問題。

我的理解是,不更改應用程序就無法啟動應用程序外部的瀏覽器。

您可以在iOS中添加以下代碼。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *address = request.URL.absoluteString;
    if( address is needed to be launched on the webbrowser ) {
        [[UIApplication sharedApplication] openURL:request.URL];
        return NO;
    }  
    return YES;
}

建議在網頁和應用之間定義協議。 干杯。

啟動瀏覽器應該沒有問題,如下所示:

我可以在Android瀏覽器中僅使用javascript啟動意圖嗎?

但是,檢測應用程序很困難。 如果您已經在應用程序中使用了JavaScript橋,則可以調用本機應用程序javascript橋,如果調用成功,則說明您在“您的應用程序”中,並且可以通過上面的intent調用進行響應。

如果不這樣做,如其他地方提到的那樣,用戶代理檢測可能是您的最佳選擇。

換句話說,您需要在Web視圖中執行可識別且獨特的操作,以使您確信自己確實在其中。 如果您執行的是普通的原始實現,那么您將不得不與用戶進行交互(“如果您正在使用我們的應用程序,請單擊此處”-太糟糕了!)或更新本機應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM