メールで送信されたURLを使用してアプリを起動することはできますか?たとえば、ユーザーが友達をアプリに招待したいというユーザープロファイルがあります。彼らは次のようなURLを持つ電子メールを送信します。
このリンクから参加してください:
http://appname?sender_id=25&some_other_value=something
iPhoneからそのリンクを開くと、ユーザーがアプリケーションにアクセスし、それらの値を解析できるようになります。
それは可能ですか?
メールで送信されたURLを使用してアプリを起動することはできますか?たとえば、ユーザーが友達をアプリに招待したいというユーザープロファイルがあります。彼らは次のようなURLを持つ電子メールを送信します。
このリンクから参加してください:
http://appname?sender_id=25&some_other_value=something
iPhoneからそのリンクを開くと、ユーザーがアプリケーションにアクセスし、それらの値を解析できるようになります。
それは可能ですか?
はい、これは完全に可能です。アプリのURLスキームを登録する必要があります。
Xcodeでアプリプロジェクトを選択し、ターゲットをクリックして、[情報]タブから新しいURLスキームを登録します。
識別子はcom.company.AppNameとしてのアプリ識別子であり、URLスキームはappNameのように使用する名前です。
理想的なソリューションとしては、これをアプリに追加しているため、カスタムスキームを使用してリンクをメールで送信しないでください。その理由は、ユーザーがコンピューターから開く可能性があるため、このリンクは機能しないためです。
最良のシナリオは次のとおりです。
appname://
今、あなたはあなたのウェブサイトにリンクしている通常のURLのリンクをあなたの電子メールで送ります、そしてここにパート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がインストールされているかどうかを確認します。このようにして、ユーザーがアプリをインストールしたことがわかり、リダイレクトが正しく機能します。
上記のマークされた答えは正しく、正常に機能します。ただし、iOS 9では、Appleはユニバーサルリンクを導入しました。これにより、特定のWebドメインまたはWebリンク(パス)をアプリに関連付けることができます。これにより、アプリがインストールされている場合はアプリにリダイレクトし、アプリがインストールされていない場合はWebページにリダイレクトしやすくなります。
古いバージョンのiOS(iOS 9より前)をまだ実行しているデバイスでは、Scheme URIをサポートする必要がある場合があることに注意してください(アプリがここのようにインストールされていない場合は、URLリンクへのフォールバックが必要になる可能性があります)。
誰かが興味を持っているなら、私はここにユニバーサルリンクでの私の経験を文書化しました。
http://applinks.org/のようなものはよりスケーラブルになり、処理するためにCookieやデフォルトを設定する必要はありません。