2012-05-15 49 views
1

我有一個UIWebView加載一個HTML頁面,其中有一些鏈接到App Store(<a herf="http://itunes/bla/bla/bla">鏈接類型)。iPhone:UIWebView打開外部瀏覽器後,然後返回到應用程序第二次打開它

點擊鏈接,打開外部Safari,然後打開外部App Store應用程序,併成功進入正確的頁面。

如果您然後單擊主頁按鈕並返回到跳板並再次單擊應用程序,它會短暫打開顯示的UIWebView,然後再次跳到外部Safari和外部App Store應用程序。

如果您再次回到應用程序,它會停留在應用程序中。

所以發生的事情是,從UIWebView HTML頁面打開外部瀏覽器鏈接後返回到應用程序,然後會再次跳回到同一鏈接。

任何人有任何想法可能會導致此?

正在使用Xcode 4.2.1,它發生在模擬器以及實際設備上(iPad 1與iOS 4.3)。

編輯 - 解決方案:

好吧,這裏是我必須做的來解決這個問題(感謝下面誰得到我看着正確的領域本的響應):

這是我原來的方法:

- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if (didLoad) { //Do not jump to URL when view first loads 
     return YES; 
    } 

    [[UIApplication sharedApplication] openURL:[request URL]]; 
    return YES; 
} 

這是我的,不保持跳躍到URL固定方法:

- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if (didShowURL) { //Do not jump to URL when returning to app 
     didShowURL = 0; 
     return NO; 
    } 

    if (didLoad) { //Do not jump to URL when view first loads 
     return YES; 
    } 

    didShowURL = 1; 
    [[UIApplication sharedApplication] openURL:[request URL]]; 
    return YES; 
} 

回答

0

您的webview正在重新加載到其最後一頁(應用程序商店頁面),並自動將用戶重新導向。您只需確保重新加載應用程序時,它不會嘗試再次加載應用程序商店鏈接。

根據您的應用程序設置,您可以使用

viewWillAppear 

隨着時間一天天的觀點被帶到前面時間的鏈接重新加載原始的HTML頁面。

+0

謝謝本......我很快就會看看這個,看看它是否有效! – jsherk

+0

我把這個標記爲正確的答案,因爲它讓我在正確的領域尋找解決方案...將我的解決方案添加到我的問題上面。謝謝 – jsherk

2

我會建議使用itms-apps://協議爲您的鏈接。這將直接將用戶發送到App Store中的應用程序,而不需要重定向。

NSURL *appStoreLink = [NSURL URLWithString:@"itms-apps://itunes.apple.com/us/app/instagram/id389801252?mt=8"]; 
[[UIApplication sharedApplication] openURL:appStoreLink]; 
+0

我不知道你能做到這一點!謝謝!儘管在使用像bit.ly這樣的鏈接縮短器時,它不適用於跟蹤目的,但這是很好的信息! :) – jsherk

+0

是的。儘管您可以使用Google Analytics(分析)或Flurry(如果有必要)在應用內跟蹤事件。 – mikebob

+0

多數民衆贊成在另一個好主意(Flurry)...感謝提示...給你一個+1。 – jsherk

相關問題