アプリで特定のサイトを Web ビューで開かないようにしたい。したがって、そのような方法で任意の Web サイトを制限できます。特定のページではなく、Web サイトを完全に制限したいということをもう 1 つ追加したいと思います。前もって感謝します。
2 に答える
はい、この UIWebview デリゲート メソッドでページの読み込みをブロックできます。クラスを webviews デリゲートとして設定することを忘れないでください。webView.delegate = self;
であり、クラスはUIViewController <UIWebViewDelegate>
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if ([request.URL.absoluteString rangeOfString:@"google"].length != 0) {
// maybe show a UIAlertView to indicate the page is blocked?
return NO;
}else {
return YES;
}
}
編集: URL に Google が含まれているかどうかを確認し、Google が含まれている場合はブロックするようになりました
少し改善: ブロックしたい Web サイトを NSArray に保存します。
NSArray *restrictedSites = [NSArray arrayWithObjects:@"http://www.google.com", @"http://www.google.co.uk", nil];
要求された Web サイトが制限された Web サイトの 1 つであるかどうかを確認します。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *site = request.URL.absoluteString
for(NSString *str in restrictedSites)
{
if ([site isEqualToString:str])
{
return NO;
}
}
return YES;
}
または、要求された Web サイトに URL が含まれているかどうかを確認することもできます。次の場合、「http://www.google」または「http://www.apple」を含むすべての URL がブロックされます。
最初に制限付きサイト アレイを作成します。
NSArray *restrictedSites = [NSArray arrayWithObjects:@"http://www.google", @"http://www.apple", nil];
要求された Web サイトに、制限された Web サイト (.com や .co.uk などを除く) のいずれかが含まれているかどうかを確認します。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *site = request.URL.absoluteString
for(NSString *str in restrictedSites)
{
if ([site rangeOfString:str].location != NSNotFound)
{
return NO;
}
}
return YES;
}
ここでは、すべてのhttp://www.google.com、http://www.google.fr、http://www.google.co.ukがブロックされます。