使用我的url方案作为链接从SMS打开应用程序
我在我的应用程序中声明了一个url方案, smstest
所以在Safari中我可以在搜索栏中smstest:my-test
或smstest://my-test
并且我的应用程序是开放的。
我试图通过短信文本实现相同的function,因此Messages应用程序将格式化smstest:my-test
或smstest://my-test
作为链接,用户可以点击它并调用我的应用程序。 但是文本没有格式化为链接。
是否可能或从SMS打开应用程序的唯一解决方案是指向带有脚本的Internet页面?
谢谢。
编辑:有趣的是,我已经安装了IMO Messenger,我收到了一个带有代码作为URL方案的短信,并由Messages app作为链接解析。 为什么我的应用程序没有发生? 我尝试了几条消息,在url之前和之后都有空格,没有任何反应。
通常,有一种使用url方案从Messages应用程序打开应用程序的标准方法:
- 将url方案添加到info.plist文件:my-scheme。
- 将应用程序安装到目标iPhone。
- 发送短信,文字如下:“my-scheme:// it-is-my-scheme。
一切都运作良好。 但是 ,当它不起作用并且你认为源代码是错误的时候,它可能是一个有趣的案例。 但事实并非如此。 我们试着调查一下这个案例:
-
在添加url方案和安装应用程序之前发送短信。 正如预期的那样,消息将显示为纯文本:
-
现在让我们将url方案添加到info.plist:
-
最后安装应用程序并发送/接收相同的短信:
如您所见,上一条消息显示为链接,如果点击它,iOS将打开我的应用程序。 但第一条消息仍然显示为纯文本,并且不可点击。 消息app的逻辑似乎是以这种方式实现的。
现在让我们从iPhone删除应用程序并再次发送相同的短信:
现在它再次显示为纯文本,但第二条消息 – 作为链接。 如果我点击它,iOS什么都不做,并打开消息应用程序。
结论:确保在安装支持您的方案的应用程序后发送/接收SMS。 只有在这种情况下,它才会显示为链接,用户可以通过点击它来打开您的应用程序。
注意:我还遇到一个案例,当安装应用程序时没有支持的url方案,然后当我添加此支持消息时,显示为纯文本而不是链接。 我无法重现它。 但如果上述步骤无法解决您的问题,请尝试:
- 从iPhone删除应用程序;
- 更改url方案(甚至更改两者:url方案和捆绑ID作为最后的手段);
- 再次安装;
- 使用新的url方案发送短信。
编辑:
我刚试过一个应用程序在短信机构上发送我的url方案并且工作了。 它的格式必须是smstest://my-test
当你收到短信工作时,必须安装app并在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; }
这个旧答案是针对您在评论中要求的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";
- 如何检测cocos2d中sprite的碰撞
- 如何检测UILabel的特定部分(子string)的水龙头?
- 如何使用requestReview(SKStore Review Controller)在随机时间段之后在当前viewController中显示审查popup窗口
- XCode一直忘记导入的框架
- 获取页面视图在最后一个屏幕上popup
- 在iOS上,setNeedsDisplay真的不会导致drawRect被调用…除非CALayer的显示或drawInContext终于调用drawRect?
- 编译警告关于丢失@required协议方法不出现
- 带有核心数据和文件同步的iCloud
- XCode版本8.3.1(8E1000a)IBOutlet连接问题