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

Eug*_*ene 7 iphone objective-c ios

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

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

并打开iPhone上的链接将用户带入应用程序,让我解析这些值.

那可能吗?

Lef*_*ris 19

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

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

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

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

最好的方案如下:

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

现在,您在电子邮件中发送链接到您网站的普通网址链接,第2部分:

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

    应用程序名称://邮箱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"]];
}
Run Code Online (Sandbox Code Playgroud)

现在在我们的appInsalled页面(例如index.html)中,我们只设置一个cookie(我们想要的任何cookie名称),然后我们将用户踢回我们的应用程序,如下所示:

<script type="text/javascript">
    window.location = 'appName://';
</script>
Run Code Online (Sandbox Code Playgroud)

我们使用cookie的原因是当用户打开电子邮件链接时使用此cookie.我们将检查浏览器是否为移动版Safari并安装了cookie.这样,我们知道用户已经安装了我们的应用程序,重定向将正常工作.