自定义以 http 开头的 URL 模式无法工作

7
我在应用程序中使用了自定义URL scheme。我成功地从safari重定向到我的应用程序。就像我设置的URL scheme是"appname"。请查看http://prntscr.com/2cjx0p
我需要使用类似于ios url redirect from mail to app的解决方案,但我不确定如何设置cookie。
我发现我必须先在我的应用程序中为服务器"http://myappname.com"设置一个cookie。但我该怎么做呢?
背景:
我可以通过在safari中键入"appname://"来使用它,并被重定向到我的应用程序。
现在,我必须将其分享到邮件中。要求从邮件打开应用程序。因此,我还将此链接设置为可在电子邮件正文中点击。但是,由于它以"appname://"开头,我没有被重定向到我的应用程序。这意味着这个链接必须以"http://"开头。
然后,我在URL scheme中设置了"http"而不是"appname",并再次分享了那段文字。所以它将变成"http://"。但是,通过键入这个,它不能将其重定向到我的应用程序。

你在邮件里放了什么?是HTML邮件吗? - Wain
@Wain 我已经设置了带有<html> <body>标签的消息。我将消息放在body中,例如“gameswap://?d”。并将isHTML属性设置为YES。但是,当我点击它(从邮件中),它没有响应。 - Krunal
你使用了 <a href=gameswap... 吗? - Wain
@Wain 是的,我做了。 <html><body><a href="gameswap://?d">gameswap://?d</a></u></html></body>。 我在任何地方都看到过,因为它不以http开头,所以无法被识别为链接。 - Krunal
@Wain 如果你知道,请回答一下。我会很感激的 :) - Krunal
3个回答

6
在您提供的问题中,代码打开了一个链接:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.myApp.com/appInstalled"]];

这将在您的服务器上的指定页面打开Safari。该页面唯一要做的事情就是设置一个cookie,然后重定向回您的应用程序(使用自定义URL scheme)。这需要由加载的网页完成(因此使用返回的头文件和HTML)。
这样做的目的是将cookie存储在Safari中(这是将来需要的地方,而且它应该具有遥远的过期日期)。我不认为你可以从应用程序中将cookie存储在Safari中(沙盒限制)。
您会看到一个切换到Safari的开关,但它几乎立即就会切换回您的应用程序。
通过返回的HTML页面中的JavaScript,您应该能够进行重定向。
<script type="text/javascript">
<!--
    window.location = "gameswap://?d"
//-->
</script>

或者使用HTML(在
标签中):
<meta http-equiv="refresh" content="0; url=gameswap://?d" />

它打开了,但没有重新导向到我的应用程序。我之前已经实现过它了,但我又遇到了这个重新导向到应用程序的问题。如何解决? - Krunal
我没有尝试你提供的最后一个解决方案。我已经尝试了打开你说的URL。从哪里调用它? - Krunal
抱歉,我不理解那个评论。从服务器返回的页面应该有一个带有cookie的头部和一些HTML代码,只需在其中进行重定向即可。 - Wain

4

我通过在包含Test.html页面的live url上执行以下脚本来解决了此问题:

在此脚本中,我已经将内容写入以下位置...

<script type="text/javascript">
window.location = 'appName://';
</script>

现在,分享链接的时候,它长成这样 'http://demo.com/test.php/?d='。当我从邮件中打开该链接时,它已经被重定向到我的应用程序的特定页面了。
我在这里找到了最大的帮助:HERE

1
如果不想使用http,可以使用这种格式。请将其设置在您的URL方案中。
www.my.app

将应用程序链接格式化
www.<characters>.<characters>://<characters>

for eg.

www.my.app://open

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接