2013-07-19 5 views
6

私のようなURLを扱うしたいと思います。このようにhttp://www.something.com/product/3/を:ハンドルのHTTP URL(インストールされている場合)

  • アプリは=>アプリケーションとそれを扱うインストールされている場合。
  • Else =>サファリで処理します。

これは可能ですか?

アイデアは電子メールで送信することができます。レシーバーにアプリがインストールされている場合は、アプリが起動して何かを実行し、インストールされていない場合はSafariで開くだけです。

私はアプリでうまくいくカスタムスキームについて知っていますが、httpプロトコルではないので、明らかにサファリでは動作しません。

+0

いや、これはジェイルブレーキングなしでは不可能です。あなたはあなたのカスタムスキームURLへのリダイレクトを試みるためにあなたのウェブサイトを得ることができます... –

+0

これを試してください:A.あなたのアプリケーションがhtmlの拡張子を扱うようにします。 B. htmlファイル(開始ファイルやリダイレクトファイルなど)でリンクを電子メールで送信します。 – user523234

+0

@SimonM私はあなただけが解決策だと思います。通常のリンク(http://something.com/product/3/)を使用するには、myscheme://something.com/product/3/というURLのポップアップを開き、インストールされている場合はアプリを開きます。何かを表示します(おそらく、ウェブURLとしてmyschemeを理解していないため、Google検索を表示します)。 – jobima

答えて

0

これは不可能です。通常のウェブサイトとSafariでそれを開くには

2

はいすることができますあなたがメールで両方のリンクを含むことができ、しかし、 、 まずInfo.plistファイルに独自のカスタムURLスキームを作成するスキームURLを使用してください

新しい行を追加するには、メニューから[エディタ]> [項目の追加]をクリックします。新しいアイテムを追加してURLタイプアイテムを設定します。 「URL Types」キーを展開し、「Item 0」を展開して、新しい項目「URLスキーム」を追加します。 「URLスキーム」の項目0と「URL識別子」の会社IDの「readtext」を入力します。

URLを解析して同じURLスキームを別の画面に表示すると、別の画面でアプリケーションを開くことができます。ここでは、あなたのリンクごとに特定のページを開くために使用します。 Webブラウザで開きます。

- (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; 
} 

アプリケーション:handleOpenURL:のOpenURL:sourceApplication:注釈:(後のiOS 4.1のために使用) アプリケーション(以前のiOS 4.1のために使用)。

+1

アプリケーションがインストールされていないとどうなりますか?サファリはreadtext://something.comを理解し、http://something.comに翻訳しますか? – jobima

+0

UはcanOpenURLを使うことができます:開かれているかどうかをチェックしてブラウザにリダイレクトできないかどうかを確認してください: –

+1

canOpenURLを実行するには、アプリケーションをインストールする必要があるため、これは問題を解決しません。問題はまだ同じです:アプリがインストールされていないときに私はサファリが理解できないURL(myscheme://something.com)を持っています – jobima

2

1)アプリケーションでカスタムURLスキームを作成します。 http://www.idev101.com/code/Objective-C/custom_url_schemes.html

2)カスタムURLスキームを作成する方法がわからない場合は、リンクをクリックします。2)次に、アプリケーションに開くURLに次のスクリプトを追加します。その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 to handleOpenURL function, otherwise mobile safari will silently ignoreウィンドウで現在の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> 

スクリプトは、自明です。open`コールし、あなたのウェブページに通常通りロードします:

3)URLを処理するために、あなたのAppDelegateでhandleOpenURLコールバックメソッドを実装します。

- (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; 
} 
+0

アプリがインストールされていないと、これは私のためには機能しません - 「ページを開くことができません」というエラーが表示されるSafariはアドレスが無効であるためページを開くことができません。 – davidwebster48