8

メールで送信されたURLを使用してアプリを起動することはできますか?たとえば、ユーザーが友達をアプリに招待したいというユーザープロファイルがあります。彼らは次のようなURLを持つ電子メールを送信します。

このリンクから参加してください: http://appname?sender_id=25&some_other_value=something

iPhoneからそのリンクを開くと、ユーザーがアプリケーションにアクセスし、それらの値を解析できるようになります。

それは可能ですか?

4

3 に答える 3

22

はい、これは完全に可能です。アプリのURLスキームを登録する必要があります。

Xcodeでアプリプロジェクトを選択し、ターゲットをクリックして、[情報]タブから新しいURLスキームを登録します。

識別子はcom.company.AppNameとしてのアプリ識別子であり、URLスキームはappNameのように使用する名前です。

理想的なソリューションとしては、これをアプリに追加しているため、カスタムスキームを使用してリンクをメールで送信しないでください。その理由は、ユーザーがコンピューターから開く可能性があるため、このリンクは機能しないためです。

最良のシナリオは次のとおりです。

  1. アプリを初めて実行するときは、アプリからSafariブラウザーを開いて、Webサイトに送信します。
  2. Webサイトで、Safari用のCookieをインストールします(myAppIsInstalledなど)
  3. 同じウェブサイトで、次のようなカスタムURLスキームを使用してユーザーをアプリにリダイレクトするだけで、ユーザーをアプリに呼び戻します。appname://

今、あなたはあなたのウェブサイトにリンクしている通常のURLのリンクをあなたの電子メールで送ります、そしてここにパート2が来ます:

  1. あなたのウェブサイトであなたはあなたのアプリがインストールされているかどうかをチェックします(クッキーが存在します)
  2. 存在する場合は、ウェブサイトからリンクを開く代わりに、次のような適切な値を使用して、ユーザーをアプリにリダイレクトします

    appname:// mailbox?sender_is = 123&user_name = Lefteris

これにより、メールリンクが常に機能し、アプリがデバイスにインストールされている場合にのみモバイルSafariからリンクを開くことができます...

最後に、注意点として、URLスキームはそうではappname://ありませんhttp://appname

パート1をよりよく説明するために、AppDelegateでは、- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsデリゲートでこれを行うことができます。

//if user has not set the app installed cookie, set it now.
bool hasAppInstalledCookie = [[NSUserDefaults standardUserDefaults] boolForKey:@"appInstalledCookie"];
if (!hasAppInstalledCookie) {
    //mark it was set
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"appInstalledCookie"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    //open the web browser
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.myApp.com/appInstalled"]];
}

appInsalledページ(たとえば、index.html)で、Cookie(任意のCookie名)を設定してから、次のようにユーザーをアプリに戻します。

<script type="text/javascript">
    window.location = 'appName://';
</script>

Cookieを使用する理由は、ユーザーが電子メールリンクを開いたときにこのCookieを使用するためです。ブラウザがモバイルサファリであり、Cookieがインストールされているかどうかを確認します。このようにして、ユーザーがアプリをインストールしたことがわかり、リダイレクトが正しく機能します。

于 2013-03-25T18:13:25.710 に答える
4

上記のマークされた答えは正しく、正常に機能します。ただし、iOS 9では、Appleはユニバーサルリンクを導入しました。これにより、特定のWebドメインまたはWebリンク(パス)をアプリに関連付けることができます。これにより、アプリがインストールされている場合はアプリにリダイレクトし、アプリがインストールされていない場合はWebページにリダイレクトしやすくなります。

古いバージョンのiOS(iOS 9より前)をまだ実行しているデバイスでは、Scheme URIをサポートする必要がある場合があることに注意してください(アプリがここのようにインストールされていない場合は、URLリンクへのフォールバックが必要になる可能性があります)。

誰かが興味を持っているなら、私はここにユニバーサルリンクでの私の経験を文書化しました。

于 2015-11-03T12:11:52.840 に答える
1

http://applinks.org/のようなものはよりスケーラブルになり、処理するためにCookieやデフォルトを設定する必要はありません。

于 2015-07-15T15:12:51.700 に答える