我希望iOS能够在我的应用程序安装在手机上时使用我的应用程序打开我的域中的URL(例如http://martijnthe.nl),如果不是,则使用Mobile Safari.
我读过可以为此创建一个唯一的协议后缀并将其注册到Info.plist中,但是如果未安装该应用程序,Mobile Safari将会出错.
什么是解决方法?
一个想法:
1)使用在任何桌面浏览器中打开的http:// URL,并通过浏览器呈现服务
2)检查用户代理,如果是移动Safari,打开myprotocol:// URL(尝试)打开iPhone应用程序并打开移动iTunes以下载应用程序,以防尝试失败
不确定这是否有效...建议?谢谢!
我们有一个处理自定义URL方案的应用程序(vstream://).当有人访问具有某些vstream://内容的网页时,如果他们没有安装我们的应用,我们需要将它们重定向到商店.
在iOS中,我们这样做:
setTimeout(function() {
window.location =
"itms://itunes.apple.com/us/app/kaon-v-stream/id378890806?mt=8&uo=4";
}, 25);
window.location = "vstream:view?code=...stuff...";
Run Code Online (Sandbox Code Playgroud)
如果window.location分配失败,则在对话框出现之前超时会跳过App Store.(我在这里找到了这种技术:是否可以为YouTube应用程序注册基于http +域的URL方案,如YouTube和地图?)
不幸的是,这个技巧在Android中无效.我们检测到设备服务器端并写了这个而不是itms:line:
"market://details?id=com.kaon.android.vstream";
Run Code Online (Sandbox Code Playgroud)
麻烦的是,当你去一个未处理的网址方案时,iOS会抛出一个错误,Android会转到生成的页面.因此,超时永远不会有机会运行.
是否有某种方式在网页上明确测试是否处理自定义URL方案,或者有人建议像这样的黑客将在Android中工作吗?(当然,我想我需要一个黑客,无论他们使用什么浏览器都可以工作,这可能是一个很高的订单...)
更新:以下方法在Nexus 7上的Jelly Bean中不起作用.新的Chrome浏览器不会转到生成的页面(因此不需要iFrame),但似乎没有任何方法可以知道URL计划得到了处理.如果是的话,无论如何都会触发超时.如果没有处理,超时会触发.如果我使用onload处理程序和iframe,onload处理程序永远不会触发(无论是否安装了应用程序).如果我弄清楚如何知道该计划是否得到处理,我会更新...
我已经删除了我以前的解决方案中的"已解决",因为它不再起作用了.
更新2:我现在有一个很好的跨平台解决方案,适用于iOS,Android 4.1,Chrome和Android预Chrome.见下文...
更新3:谷歌再次打破了一切.看看非常好的解决方案,我已经接受了amit_saxena那里的某个地方/
我们正在尝试生成一个链接,当在浏览器中单击时,会打开我们的应用程序(如果已安装).这通常是这样的:
intent://some.domain/some=parameters#Intent;scheme=somescheme;package=my.package.name
Run Code Online (Sandbox Code Playgroud)
如果配置正确,此uri可以启动您的应用程序(如果已安装),否则将重定向到Play商店.但是,这不是我们想要的.我们想通过安装引荐来重定向到Play商店.据我们所知,intent://语法不能这样做.
我们提出的另一个解决方案是制作
market://details?id=my.package.name&referrer=somereferrer
Run Code Online (Sandbox Code Playgroud)
可通过我们的App打开.此方法的问题在于它不会自动启动应用程序,而是询问用户是否要打开我们的应用程序或Play商店的链接.
有什么解决方法吗?即使是最轻微的建议也会受到赞赏.
我正在尝试在单击WebView组件内的链接时启动Activity.
我的Webview已加载到内部Main.java,我想SubActivity.java在点击网站内的链接时启动Main.java?
另外,如何将参数传递给此活动?
示例:inspection://Project/1
"Inspection"是我的应用程序的名称,inspection是我想要启动的Activity ,是我想要1的ID.
我想让我的应用程序的所有URI启动我的应用程序,如果它已安装.如果没有安装,我想显示一个关于我的应用程序的网页.看了以下两个问题后,我仍然找不到可靠的解决方案.
Intent过滤器适用于Google+,但不适用于Chrome和Facebook
Android - 如果未安装应用程序,则重定向存储(从网站启动)
第一个解决方案(重定向)的问题是,当未安装应用程序时,重定向到自定义协议会导致错误页面,如第二个问题中所述.第二个解决方案(使用具有服务器名称的意图过滤器的http协议)的问题在于Chrome不支持意图过滤器,如第一个问题中所述.所以现在的问题是,有没有办法防止在没有安装支持的应用程序时发生重定向?
android ×4
ios ×2
url ×2
google-play ×1
html ×1
install ×1
intentfilter ×1
iphone ×1
redirect ×1
referrer ×1
url-scheme ×1
webview ×1