首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 網頁視圖限制特定網站存取的實作方法

     編輯:程式設計綜合問答

在 iOS 應用開發中,若需於 UIWebView(或現代專案中的 WKWebView)內攔截並封鎖特定網域的載入需求,可透過實作委派模式達成。核心邏在於於導航開始前檢查請求的 URL,若符合封鎖規則則回傳 false 以取消載入。

實作步驟

  1. 讓檢視控制器遵循 UIWebViewDelegate 協定(Swift 專案建議改用 WKNavigationDelegate)。
  2. 將 webView.delegate = self 設定給網頁視圖實例。
  3. 實作 webView(_:shouldStartLoadWith:navigationType:) 方法,在其中進行 URL 字串比對。

程式碼範例 (Objective-C)

@interface ViewController () <UIWebViewDelegate>
@property (nonatomic, strong) UIWebView *webView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.webView.delegate = self;
    // 載入初始頁面...
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *urlString = request.URL.absoluteString;
    // 範例:封鎖所有包含 "google" 的網址
    if ([urlString rangeOfString:@"google"].location != NSNotFound) {
        return NO; // 取消載入
    }
    return YES; // 允許載入
}

@end

進階建議

  • 改用 WKWebView:iOS 8+ 建議採用 WKWebView 搭配 WKNavigationDelegate 的 webView(_:decidePolicyFor:decisionHandler:),效能更佳且支援非同步決策。
  • 規則外部化:將封鎖清單存放於設定檔或遠端設定,避免硬編碼於程式中。
  • 使用者提示:封鎖時可彈出提示或導向自定錯誤頁,提升使用者體驗。

透過委派攔截機制,即可靈活控制應用內瀏覽器的存取權限,滿足內容過濾、家長控管或企業合規等需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved