2012-02-08 35 views
13

iPhoneを一意に識別して、私たちのサーバがカスタムhtmlで応答できるようにしたいと考えています。私は、Safariとアプリの組み込みブラウザで電話を識別できるようにしたい。各アプリケーションはサンドボックス化されているので、クッキーは機能しません。iOSのモバイルサファリとアプリ内のユニークな識別子

ありがとうございました

+0

「一意に識別する」という意味を明確にすることはできますか?つまり、同じ電話がアプリ経由で、またはモバイルSafari経由であなたのWebサイトにアクセスしたことをいつでも知りたいのですか? –

+0

ええ電話でアプリやモバイルブラウザでGoogleのサイトにアクセスしたときにお知らせします –

答えて

10

これは実際には非常に困難です。

それが最初のクッキーを開き、設定したときに、それはモバイルSafariのを起動するようにするには、アプリをプログラムすることができ、その後、カスタムURLスキームを使用してアプリに戻ってリダイレクトします。

それは奇妙に見えるかもしれませんが、それはFacebookの共有ログインシステムがどのように機能するかを実際だと、それはアプリとブラウザの両方が彼らのサンドボックスの「抜け出す」と同じ一意のクッキーIDを共有することができます。もちろん

ユーザーがクッキーを削除した場合は、リダイレクトに迷惑かもしれませんアプリが起動し、すべての時間を行う場合を除き、あなたは知らないでしょう。

UPDATE:

iOSの9のとおり、あなたは今、代わりにSafariのアプリにリダイレクトするのにアプリ内 SFSafariViewControllerを使用してページを開くことができます。これはまだちょっとぎっしりですが、ダブルアプリのスイッチよりも好ましいかもしれません。

+0

素晴らしいアイデアですが、http://stackoverflow.com/questions/8636202/generating-a-non-udid-identifier-in- javascript-to-identify-ios-devices-uniquelモバイルSafariでは、デフォルトでCookieが無効になっています。私は何か間違っていますか(初心者の質問のために私を許してください、私はiOS開発の真の初心者です)? –

+0

サードパーティのCookieは無効になっていますが、ファーストパーティ(既定のページと同じドメインのもの)はデフォルトで有効になっています。 –

12

これは直接可能ではありませんが、ニック・ロックウッドが述べられ、ここで彼は説明する方法の大幅拡張版だたように、Webサイトの協力を得て、それが可能である:

あなたのアプリはこれを行う必要があります。

[[UIApplication sharedApplication] openURL:url];
  • URLを使用して
    1. 打ち上げモバイルサファリでは、特別なもの、例えばなければなりません。 your-app-url-scheme:cookievalue=<somevalue>からhttp://yourwebsite.com/give-ios-app-the-cookie
    2. あなたのウェブサイト上で、そのURLが起動され、問題のリダイレクト(例えば。angrybirds:cookievalue=hh4523523sapdfa
    3. アプリのデリゲートを使うことにクッキーの値に

    注意を得るために- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotationプロセスURLを受け取りますアプリケーションが起動したときにこれを自動的に行うべきではありません - ユーザはモバイルSafariへの転送を見ることができます。これは良いユーザーエクスペリエンスではなく、Appleはあなたのアプリを拒否します(Appleはこれを "彼らの事前の同意 ")。

    ユーザーエクスペリエンスに注意して、ユーザーに応じて行う方がよいでしょう。ユーザが「ログイン」ボタンを押すのを待ってから、あなたのウェブサイトにログインしていない場合は、http://yourwebsite.com/give-ios-app-the-cookieにログイン画面が表示されます。ユーザーがログインしている場合、ユーザーをリダイレクトする前に、Safariで2〜2秒間、「自動的にログインしています...」画面が一時的に表示されます。

  • 関連する問題