是否有可能以某种方式使用通过邮件发送的URL启动我的应用程序?例如,我有用户想要邀请他们的朋友加入应用程序的用户个人资料。他们发送的电子邮件有一些网址:
通过此链接加入我:
http://appname?sender_id=25&some_other_value=something
并从iPhone打开该链接会将用户带入应用程序,并让我解析这些值。
这可能吗?
答案 0 :(得分:19)
是的,这完全有可能。 您需要为您的应用注册URL方案。
在Xcode中选择您的应用程序项目,然后单击目标,并从“信息”选项卡中注册一个新的URL方案。
标识符是您的应用程序标识符com.company.AppName,URL Scheme是您要使用的名称,例如appName
现在至于理想的解决方案,正如我们现在将其添加到我们的应用程序中,理想情况下,您应该不使用自定义方案发送电子邮件中的链接。 原因是用户可能会从计算机上打开它,因此此链接无效。
最佳方案如下:
appname://
现在,您可以在电子邮件中发送链接到您网站的正常网址链接 这是第2部分:
如果它存在,请使用正确的值将用户重定向到您的应用,而不是打开您网站上的链接,例如
应用程序名称://邮箱sender_is = 123&安培; USER_NAME = Lefteris
这可确保您的电子邮件链接始终有效,并且只有在您的应用已安装在设备上时才会从Mobile Safari打开链接...
最后,只需注意,网址方案为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。我们将检查浏览器是否为移动版Safari并安装了cookie。 这样,我们就知道用户已经安装了我们的应用程序,重定向将正常运行。
答案 1 :(得分:2)
上面标记的答案是正确的,并且正常。但是,在iOS 9中,Apple引入了Universal Links,它允许您将特定的Web域或Web链接(路径)与您的应用相关联。这样,如果安装了应用,则可以更轻松地重定向到您的应用,如果应用不是,则可以重定向到您的网页。
请注意,对于仍在运行旧版iOS的设备(iOS 9之前的版本),您可能仍需要支持Scheme URI(如果应用程序未安装here,可能会回退到网址链接) )。
如果有人感兴趣,我已经记录了我对Universal Links here的体验。
答案 2 :(得分:0)
像http://applinks.org/这样的东西会更具扩展性,不需要设置cookie或默认值来处理。