あなたが探し求めてきたものは、
– webView:decidePolicyForNavigationAction:request:frame:decisionListener:
これはWebPolicyDelegate
プロトコルの一部です。
のドキュメントWebPolicyDelegate
、特にこのデリゲート メソッドの説明を読んでください。のドキュメントでWebPolicyDecisionListener
は、リスナーに送信できるメッセージについて説明しています。このデリゲート メソッド内でリダイレクトを識別し、それを使用するか無視するかを決定リスナーに指示できます。
編集:
50 点はありがたかったですが、あなたの問題解決に役立たなかったとしたら、私はそれに値するとはとても思えません。
ドキュメント ベースではない、または ARC またはガベージ コレクションを使用する小さなアプリを作成しました。MainMenu.xib ファイルで自動レイアウトをオフにし、単純にその中に WebView のインスタンスを配置しました。AppDelegate を変更して、WebView インスタンスのアウトレットを含めました。
-applicationDidFinishLaunching:
次に、次のようにスタブを肉付けして作成しました。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSString *urlString = @"http://drive.google.com";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[[[self webView] mainFrame] loadRequest:urlRequest];
}
リダイレクトを受け取ったとしても、ページを表示する能力に影響を与えているようには見えません。
私たちは同じページにいますか (しゃれは意図されていません)?
編集2:
良いニュース (または、POV によっては悪いニュース): リダイレクトが問題になることはありませんでした (実際に何が起こっているのかを明らかにするのには役立ちましたが)。
Google ドライブに関して言えば、WebView は承認されたブラウザーではありません。ただし、ユーザー エージェント文字列を変更することで、これを修正することができます (NB、以下)。改訂されたコードは次のとおりです。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSString *urlString = @"http://drive.google.com";
NSURL *url = [NSURL URLWithString:urlString];
NSString *customUserAgent = [NSString stringWithFormat:@"%@ Version/6.0.2 Safari/8536.26.17", [[self webView] userAgentForURL:url]];
[[self webView] setCustomUserAgent:customUserAgent];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[[[self webView] mainFrame] loadRequest:urlRequest];
}
注: ユーザー インターフェースは完全に機能しているように見えますが、それでも、Google はブラウザが何であるかを判断する方法を変更し、このスキームを破る可能性があるため、注意してください. Google ドライブにアクセスする代替手段として、SDK を調べてみてください。
いつものように、あなたの努力に幸運を。