8

是否可以使用通过邮件发送的 URL 以某种方式启动我的应用程序?例如,我有用户个人资料,用户想邀请他们的朋友加入应用程序。他们发送一封电子邮件,其中包含一些网址,例如:

通过此链接加入我: http://appname?sender_id=25&some_other_value=something

从 iPhone 打开该链接会将用户带入应用程序并让我解析这些值。

那可能吗?

4

3 回答 3

22

是的,这是完全可能的。您需要为您的应用注册一个 URL 方案。

在 Xcode 中选择您的应用项目,然后单击目标,然后从 Info 选项卡中注册一个新的 URL 方案。

标识符是您的应用标识符,如 com.company.AppName,而 URL Scheme 是您希望使用的名称,例如 appName

现在至于理想的解决方案,因为我们现在将其添加到我们的应用程序中,理想情况下,您不应该使用您的自定义方案在电子邮件中发送链接。原因是用户可能从计算机上打开它,所以这个链接不起作用。

最好的情况如下:

  1. 当您的应用程序第一次运行时,从您的应用程序中打开 Safari 浏览器并将其发送到您的网站。
  2. 在网站中,为 Safari 安装一个 cookie(如 myAppIsInstalled)
  3. 在同一个网站中,只需使用您的自定义 URL 方案将用户重定向到您的应用程序,即可将用户踢回您的应用程序,例如appname://

现在您在电子邮件中发送带有链接到您网站的正常 URL 的链接,这是第 2 部分:

  1. 在您的网站中,您检查您的应用程序是否已安装(cookie 存在)
  2. 如果它存在,而不是从您的网站打开链接,而是使用正确的值将用户重定向到您的应用程序,例如

    appname://mailbox?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。我们将检查浏览器是否是移动 safari 和 cookie 是否已安装。这样,我们知道用户已经安装了我们的应用程序,并且重定向将正常工作。

于 2013-03-25T18:13:25.710 回答
4

上面标记的答案是正确的并且工作正常。但是,在 iOS 9 中,Apple 引入了Universal Links,它允许您将特定的 Web 域或 Web 链接(路径)关联到您的应用程序。如果应用程序已安装,则可以更轻松地重定向到您的应用程序,或者如果应用程序未安装,则可以更轻松地重定向到您的网页。

请注意,对于仍在运行旧版本 iOS(iOS 9 之前)的设备,您可能仍需要支持 Scheme URI(如果未像此处那样安装应用程序,可能会回退到 url 链接)。

如果有人感兴趣,我在这里记录了我使用 Universal Links 的经验。

于 2015-11-03T12:11:52.840 回答
1

http://applinks.org/这样的东西将更具可扩展性,并且不需要设置 cookie 或默认值来处理。

于 2015-07-15T15:12:51.700 回答