例: Facebook アプリは基本的に html5 を使用した単なる webview です。では、誰かのウォールに何かを書き込もうとすると、デフォルトのメッセージ エディターなどにどのようにリンクするのでしょうか? アプリの一部がおそらく Three20 を使用していることはわかっています。アプリの URL を使用して、アプリのその部分にリンクしているだけですか? (例: fb://profile/122605446)。
4 に答える
UIWebView
はい、デリゲート メソッドメソッドを使用してこれを行うことができますwebView:shouldStartLoadWithRequest:navigationType:
。カスタム コードをトリガーするには、カスタム URL スキームを使用する必要があります。それ以外の場合は、通常どおり通過させます。あなたの例fb
ではカスタムスキームです。URL の残りの部分を使用して、ユーザー 122605446 のプロファイル画面に移動します。
役立つサンプルコードを次に示します。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *scheme = [url scheme];
if ([scheme isEqualToString:@"fb"]) {
//Do something with the rest of the url and take any action you like.
}
else {
return YES;
}
}
はい、できます。特にUIWebViewDelegate Protocol Referenceを見てください。webView:shouldStartLoadWithRequest:navigationType:
はNSURLRequest
、リンクがクリックされると通知します。リンクに特定の引数を含めることができます。引数に応じて、iOS アプリで開くビューをカスタム処理できます。NO
または、リクエストがロードされないようにする場合は、このメソッドに戻るだけです。
UIWebViewDelegate には というメソッドがありwebView:shouldStartLoadingRequest:navigationType
ます。この方法を使用して、特定のリンクやボタンのクリックなどを傍受できます。独自のリンクを作成することもできます。
<a href="myApp://dosomething">Click!</a>
デリゲート メソッドの 2 番目の引数には、URL が "myApp://dosomething" である NSURLRequest が含まれるようになりました。
アプリに多数の URL タイプ (または 1 つだけ、fb://) を登録するだけです。
次に、URL を解析し、受け取った URL に基づいてアプリケーションのさまざまな部分を開きます。
概要とチュートリアルについては、http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.htmlを参照してください。
(この場合、アプリのビューが HTML5 で記述されているかどうかは問題ではありません。)