ios url从邮件重定向到应用程序

时间:2013-03-25 18:02:27

标签: iphone ios objective-c

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

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

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

这可能吗?

3 个答案:

答案 0 :(得分:19)

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

在Xcode中选择您的应用程序项目,然后单击目标,并从“信息”选项卡中注册一个新的URL方案。

标识符是您的应用程序标识符com.company.AppName,URL Scheme是您要使用的名称,例如appName

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

最佳方案如下:

  1. 首次运行您的应用时,请使用Safari浏览器打开并将其发送到您的网站。
  2. 在网站上,安装Safari的cookie(如myAppIsInstalled)
  3. 在同一个网站上,只需使用自定义网址方案将用户重定向到您的应用,即可将用户踢回您的应用,例如appname://
  4. 现在,您可以在电子邮件中发送链接到您网站的正常网址链接 这是第2部分:

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

      应用程序名称://邮箱sender_is = 123&安培; USER_NAME = Lefteris

    3. 这可确保您的电子邮件链接始终有效,并且只有在您的应用已安装在设备上时才会从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或默认值来处理。