【问题标题】:Open app from SMS with my url scheme as a link使用我的 url 方案作为链接从 SMS 打开应用程序
【发布时间】:2014-05-25 12:14:34
【问题描述】:

我在我的应用程序中声明了一个 url 方案 smstest,所以在 Safari 中我可以在搜索栏中写 smstest:my-testsmstest://my-test 并且我的应用程序已打开。

我正在尝试从 SMS 文本中实现相同的目的,因此 Messages 应用程序会将 smstest:my-testsmstest://my-test 格式化为链接,用户可以点击它并调用我的应用程序。但文本未格式化为链接。

从 SMS 打开应用程序是否可能或唯一的解决方案是指向带有脚本的 Internet 页面?

谢谢。

编辑:有趣的是,我已经安装了 IMO Messenger,我收到了一条带有代码作为 URL 方案的 SMS,消息应用程序将其解析为链接。为什么我的应用程序没有发生?我尝试了几条消息,网址前后都有空格,但没有任何反应。

【问题讨论】:

  • 我认为唯一的选择就是如您所说,链接到网络,然后网络重定向到您的应用
  • 谢谢@jcesar,你知道一些资源或教程来开发那个JS页面吗?谢谢。
  • 我刚刚将其添加为答案
  • 查看我的更新答案,它对我有用

标签: ios url-scheme


【解决方案1】:

一般来说,通过使用 url 方案从 Messages 应用程序打开应用程序的标准方法:

  1. 将 url 方案添加到 info.plist 文件:my-scheme。
  2. 将应用程序安装到目标 iPhone。
  3. 使用如下文本发送短信:“my-scheme://it-is-my-scheme.

一切正常。 但是当它不起作用并且您认为源代码错误时,可能是一种有趣的情况。但事实并非如此。让我们试着调查一下这个案例:

  1. 在添加 url 方案和安装应用程序之前发送 SMS。正如预期的那样,消息将显示为纯文本:

  2. 现在让我们将 url 方案添加到 info.plist:

  3. 最后安装应用程序并发送/接收相同的短信:

如您所见,最后一条消息显示为链接,如果我点击它,iOS 会打开我的应用程序。 但是第一条消息仍然显示为纯文本,并且不可点击。消息应用程序的逻辑似乎就是以这种方式实现的。

现在让我们从 iPhone 中删除应用程序并再次发送相同的短信:

现在它再次显示为纯文本,但第二条消息 - 作为链接。如果我点击它,iOS 什么也不做,只打开 Messages 应用程序。

结论:请务必在安装支持您的方案的应用程序后发送/接收短信。只有在这种情况下,它才会显示为链接,用户可以通过点击它来打开您的应用程序。

注意:我还发现了一种情况,即一开始安装应用程序时没有受支持的 url 方案,然后当我添加此支持消息时,它显示为纯文本而不是链接。我无法重现它。但如果上述步骤无助于解决您的问题,请尝试:

  1. 从 iPhone 中删除应用程序;
  2. 更改 url 方案(或什至同时更改:url 方案和 bundle id 作为最后的手段);
  3. 重新安装;
  4. 使用新的 url 方案发送 SMS。

【讨论】:

  • 我认为我的问题是您解释的内容以及我进行测试所采取的步骤。现在该方案已完美解析,并且一切正常。很好的答案,谢谢。
  • 嗨,我有一个疑问。这里,在上面的例子中,“Stack-overflow”是 URL Scheme 的值。什么嗨?普通短信?我已经发送了类似的文本,但它只是文本而不是链接。
  • @Fr33KiLL,是的,“he-there”只是文本,它作为 url 工作,您可以添加参数:stack-overflow://hi-ther?p1=1&p2=2 然后在应用程序中解析它。 “stack-overflow” - 与 Info.plist 文件中的 URL 方案中的字符串相同。 “://” - 是必需的。
  • 嗨,如果没有安装应用程序,谁能说我如何在浏览器中打开该链接?
【解决方案2】:

编辑:

我刚刚尝试使用一个应用程序在短信正文上发送我的 url 方案并且工作正常。 它必须有这种格式smstest://my-test

当您收到短信时,必须安装该应用程序并使用 info.plist 上声明的 url 方案。

我添加了一条使用不同 url 方案接收到的短信的屏幕截图,所有这些都被 iPhone 短信应用程序识别

如果还是不行,尝试实现并让他们返回YES

application: handleOpenURL:application: openURL:sourceApplication: annotation:

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
{
    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return YES;
}

这个旧答案是针对您在 cmets 上要求的 JS 重定向。

我使用它来从 web 重定向到应用程序,并在未安装应用程序的情况下回退到 itunes url

var now = new Date().valueOf();
setTimeout(function () {
    if (new Date().valueOf() - now > 100) return;
    window.location = "http://itunes.apple.com/yourappurl";
}, 25);
window.location = "smstest://my-test";

【讨论】:

  • 将“my-test”附加到 smstest://my-test 的末尾对我有用。没有它,链接不会在 SMS 中生成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
相关资源
最近更新 更多