6

次のような URL を処理したい:http://www.something.com/product/3/この方法で:

  • アプリがインストールされている場合 => アプリで処理します。
  • そうでなければ=>サファリで処理します。

これは可能ですか?

アイデアは、そのURLを電子メールで送信でき、受信者にアプリがインストールされている場合、アプリが起動して何かを実行し、インストールされていない場合はサファリ経由で開くだけです。

アプリでは正常に機能するカスタムスキームについて知っていますが、httpプロトコルではないため、サファリでは明らかに機能しません。

4

3 に答える 3

2

1) アプリでカスタム URL スキームを作成します。カスタム URL スキームの作成方法がわからない場合は、次のリンクをたどってください: http://www.idev101.com/code/Objective-C/custom_url_schemes.html

2) 次に、アプリで開く URL に次のスクリプトを追加します。

<script language="javascript" type="text/javascript">
    var iOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false);
    var appUrlScheme = "myappscheme://" + document.URL;
    if (iOS) {
        window.open(appUrlScheme, "_self");
    } 
</script>

スクリプトは一目瞭然です。iOS デバイスの場合は、カスタム URL スキーム、つまりmyappscheme://whateverurl.com'. If you app is installed on the device then iOS is going to launch your app and pass this URL tohandleOpenURL function, otherwise mobile safari will silently ignorewindow.open` 呼び出しで現在の URL を開こうとするだけで、Web ページは通常どおり読み込まれます。

3) handleOpenURLAppDelegate にコールバック メソッドを実装して、URL を処理します。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    NSLog(@"url: %@", url);
    NSLog(@"query string: %@", [url query]);
    NSLog(@"host: %@", [url host]);
    NSLog(@"url path: %@", [url path]);

   //REDIRECT USER TO A VIEW CONTROLLER

    return YES;
}
于 2014-07-10T04:12:49.060 に答える
1

はい、 URL スキームを使用して行うことができます。まず、Info.plist ファイルに独自のカスタム URL スキームを作成します。

メニューに移動し、[エディター] > [アイテムの追加] をクリックして、新しい行を追加します。新しいアイテムを追加して、URL タイプのアイテムを設定します。URL タイプ キーを展開し、アイテム 0 を展開して、新しいアイテム「URL スキーム」を追加します。「URLスキーム」の項目0に「readtext」、「URL識別子」に貴社識別子を記入してください。

次に、同じ url スキームの異なる url の url を解析して、異なる画面でアプリを開きます。ここでは、アラートのみを示しています。リンクに従って特定のページを開くために使用します。ウェブブラウザで。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    // Display text
    UIAlertView *alertView;
    NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    alertView = [[UIAlertView alloc] initWithTitle:@"Text" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
    [alertView release];
    return YES;
}

application:handleOpenURL : (以前の iOS 4.1 で使用) application:openURL:sourceApplication:annotation: (以降の iOS 4.1 で使用)。

于 2013-07-19T08:18:05.503 に答える
0

いいえ、それは不可能です。ただし、両方のリンクをメールに含めることができます。

于 2013-07-19T08:06:11.967 に答える