是的,这是完全可能的。
您需要为您的应用程序注册一个 URL 方案。
在 Xcode 中选择您的应用程序项目,然后单击目标,并从“信息”选项卡中注册一个新的 URL 方案。
标识符是您的应用程序标识符,如 com.company.AppName,URL 方案是您希望使用的名称,如 appName
现在至于理想的解决方案,由于我们现在将其添加到我们的应用程序中,因此您最好不要使用自定义方案在电子邮件中发送链接。
原因是用户可能从计算机上打开它,因此此链接将不起作用。
最好的场景如下:
- 当您的应用程序首次运行时,从应用程序内打开 Safari 浏览器并将其发送到您的网站。
- 在网站中,安装 Safari 的 cookie(如 myAppIsInstalled)
- 在同一个网站中,只需使用自定义 URL 方案将用户重定向到您的应用程序,即可将用户踢回您的应用程序,例如
appname://
现在,您在电子邮件中发送带有链接到您网站的普通 URL 的链接
第二部分来了:
- 在您的网站中检查您的应用程序是否已安装(存在 cookie)
-
如果存在,则不要从您的网站打开链接,而是使用正确的值将用户重定向到您的应用程序,例如
appname://邮箱?sender_is=123&user_name=Lefteris
这可确保您的电子邮件链接始终有效,并且仅当您的应用程序已安装在设备上时,您才能从 Mobile 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。我们将检查浏览器是否为 mobile safari 并且是否安装了 cookie。
这样,我们就知道用户已经安装了我们的应用程序,并且重定向将正常工作。