2012-08-29 32 views
4

最近,一些開發人員已經開始創建應用程序,通過UIWebViews指向國有內容(免費,公共財產)。這通常不會是一個問題,除了應用程序都是廣告支持的,有些甚至是付費的。基本上,他們正在通過國有內容賺錢。我該如何輕輕地「突破」UIWebview?

我的問題是這樣的:我如何強制網站打開一個新的Safari窗口,而不是顯示在UIWebview(這是包裝在他們的應用程序的品牌)?我能夠使用以下方式檢測UIWebview,但除了簡單地隱藏內容之外,我無法做任何事情。我更喜歡它提供一個鏈接到我們的內容,然後在Safari中打開。

這是我如何檢測的UIWebView:

var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent); 

回答

2

遺憾的是它相當瑣碎的開發人員將用戶代理字符串迫使他們想要什麼,所以你的企圖阻撓這些開發者可能只是暫時的。您無法強制您的內容在瀏覽器中查看。用戶可以使用類似CURL的工具來查看您的內容......

+1

誠然,但通過谷歌分析,我想我們可以保持在新的用戶代理之上,但不久之後可能會變得相當笨拙。這不就像在別人的內容周圍放置iframe並在您的網站上銷售廣告一樣嗎? –

1

一旦您檢測到您處於UIWebview中,您需要激發一個window.open()以將您的內容放入新窗口。

這談到一些怪癖,使它有點棘手(但不是不可能的):Opening popup links in UIWebview。請注意,這個問題與你的相反,但接受的答案確實顯示瞭如何讓UIWebview通過Javascript彈出一個新窗口。

自從Web開始以來,這一直是人們關注的問題。您無法阻止人們刮掉您的內容,但是您可能難以重新構圖。

編輯補充

不幸的是,你的應用程序可以攔截window.open():UIWebView respond to Javascript calls

我想你可以隨時放棄,並顯示一條橫幅,上面寫着類似「你用這些數據支付了稅款,你不應該再次支付的廣告。只需打開瀏覽器並轉到...「

+0

感謝您的回答,儘管看起來這些解決方案仍然會導致鏈接在相同的UIWebview窗口中打開。開發者是否有可能抑制新窗口? –

1

你可以看看它是否是我們bView或Mobile Safari,如this thread所示。問題是,你只能通過一個自定義的URL方案打開Safari,但認爲只有http://,https://等工作。即使會有類似safari-http://的應用程序,具有UIWebView的應用程序的程序員也可以捕獲該請求並將其重定向回Web視圖。所以,我很抱歉地說:這是不可能的。