我的网站采用AJAX驱动的搜索,使用深层链接.当用户关注链接时......
http://example.com/articles#/?tags=Mac%20OS,review
Run Code Online (Sandbox Code Playgroud)
...标签"Mac OS"和"评论"应该已经在搜索表单中选择,并且应该在页面上显示与"Mac OS"和"评论"相关的文章.
我有以下场景,需要修复
这里的问题 - 是重复的文章渲染,对用户来说看起来非常糟糕.他查看所有文章,几秒钟后,他们将被"Mac OS"替换.
我需要有以下场景:
为此,我需要获取请求字符串的哈希部分:
/?tags=Mac%20OS
Run Code Online (Sandbox Code Playgroud)
我之后不能使用请求参数,因为我使用AJAX和深层链接.使用?-part,浏览器将被强制重新加载页面.我需要做任何事情而不重新加载页面.
非常感谢您的帮助.
谢谢.
我可以在我的Manifest中的intent-filter中使用以下过滤器成功实现app的深层链接:
<data android:host="myhost.com"
android:pathPrefix="/v"
android:scheme="http" />
Run Code Online (Sandbox Code Playgroud)
例如.我的网址是:
http://myhost.com/v/login1.php?id=123&name=abc&type=a
http://myhost.com/v/login1.php?id=123&name=abc&type=b
Run Code Online (Sandbox Code Playgroud)
我想排除
http://myhost.com/v/login1.php?id=123&name=abc&type=c
Run Code Online (Sandbox Code Playgroud)
现在我想要排除几个具有相同前缀的Url.是否可能或我是否需要明确指定所有网址android:path?如果是这样,如何处理查询参数的值?
我有几个分支链接,旨在深入链接到我的iOS应用程序并将图像预加载到UIImageView.它们在安装应用程序时可以正常工作,无论它是在后台还是已经终止.但是,如果尚未安装该应用程序,它们将无法运行.它们正确链接到应用程序商店,但是一旦安装了应用程序,参数似乎无法正确流动.
我说参数没有SEEM流过,因为我找不到测试方法,因为我认为没有办法在Xcode中通过deeplink模拟一个全新的应用程序安装.我知道我可以在没有应用程序自动启动的情况下从Xcode构建到我的手机,然后单击深层链接,但到那时,应用程序已经安装在我的手机上,因此它违背了测试的目的.如果有人知道通过deeplink测试应用程序安装的方法,我很乐意接受这些信息并与它一起运行一段时间......
这是一个深层链接的例子,它应该将图形加载到衬衫设计中:
有没有人知道Branch在安装后没有正确发送数据的任何已知问题?
编辑:这是我现在在appDelegate分行代码中得到的内容.我无法证明url没有设置,但HomeViewController没有像非安装后启动那样下载链接图像.就像我之前提到的,我不知道如何模拟这种情况,因为Xcode模拟器总是先安装,所以我没有机会模拟单击预安装链接.
let branch: Branch = Branch.getInstance()
branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: { params, error in
if (error == nil) {
if let url = params["product_picture_url"] as? String {
let url = NSURL(string: url)!
HomeViewController.injectedImageUrl = url
}
}
})
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用自定义选项卡实现OAuth2登录流程,但在登录成功后,将使用以下URL检索302重定向:"my.app:/oauth2/code?xxx".
现在我在AndroidManifest中声明了重定向URI来监听这个,但是看到ERR_UNKNOWN_URL_SCHEME:/
<intent-filter>
<data
android:host="oauth2"
android:scheme="my.app"
android:pathPrefix="/code"
/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的url方案来听,但似乎没有触发打开我的应用程序.
我有3个活动:主要,登录,向导.
对于每个Activity,我都有单独的导航图和片段目的地.
主导航图还具有登录活动目的地,以便在注销时启动登录屏幕.
从Action.MAIN启动器意图启动时,应用程序似乎正常工作.
但是在使用Deep Link时遇到问题.我想将URI添加到Login Nav Graph(更改密码片段).此导航图使用单独的NavHostFragment.我用过2种方法.
START DESTINATION(登录片段目的地).这里也退回按钮不能正常工作,即完成应用程序而不是返回主导航图主要目的地.Login Activity Destinationin Main Nav Graph和again,这里Back按钮确实正常工作,我按预期登陆Login Fragment Destination.但在这里我想手动导航到更改密码片段目的地,我遇到另一个问题,即Intent Action.View与Uri数据不会传递到此登录活动目的地.它仅传递给主要活动,主要活动主持人.总结一下.我认为由活动目的地连接的多个导航图之间的深层链接行为不能正常工作.我不知道是否有任何解决方案.
我能以某种方式从NavController检索Deep Link Arguments(Uri数据)吗?或者唯一的解决方案是从getIntent().data获取它?在这里,正如我所说,这个Intent不会转发到最终目标Activity,而只会转移到创建的Activities堆栈中的第一个Activity.
现在我回到手动处理没有Android导航架构的Deep Links,因为如果有比单个Nav Graph更复杂的导航结构,单个Activity并且只有内部Fragment导航,它似乎毫无用处.
我在我的应用程序中启用了应用程序链接。它工作正常。但是在我的应用程序中有一些场景我无法处理传入的 url。在这些情况下,我想将该 url 重定向到设备中的默认浏览器。
目前我尝试做的是使用意图打开带有 url 的浏览器,但它再次重定向到我的应用程序本身。应用程序链接的格式 ->
https://<domain>/<prefix>/<params>
Run Code Online (Sandbox Code Playgroud)
因此,根据参数,我想处理应用程序本身中的应用程序链接或将其重定向到默认浏览器。以下是我尝试使用上述网址打开浏览器的代码
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(appLinkModel.url))
browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER)
browserIntent.resolveActivity(packageManager)?.let {
startActivity(browserIntent)
}
Run Code Online (Sandbox Code Playgroud)
我尝试排除 addCategory() 行,但结果是一样的。应用程序崩溃(因此出现了 resolveActivity()),或者应用程序在循环中自行打开。
我想做的事
所以我想要做的是将 url 重定向到默认浏览器(或显示一个没有我的应用程序的选择器),而不是一次又一次地触发应用程序链接。那么这可能吗?
我有一个 Netflix 模型应用程序,我想与其他人分享电影内容,如果接收者有该应用程序,那么内容应该在他/她的应用程序中打开,或者如果应用程序不存在,则访问网站。
我尝试使用 Firebase,但效果不太好,所以我尝试在 flutter 中使用 uni_links,但这是我第一次使用它,没有找到太多关于它的教程。
下面是我的代码,它纯粹是在 flutter 中,并使用共享小部件来共享内容。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:share/share.dart';
import 'package:uni_links/uni_links.dart';
// Share tab
enum UniLinksType { string, uri }
class SharePage extends StatelessWidget
{
SharePage(this.shareType, this.share, this.image);
final shareType;
final VideoDataModel share;
final image;
String latestLink;
Uri latestUri;
StreamSubscription sub;
UniLinksType type = UniLinksType.string;
initPlatformState() async
{
if(type == UniLinksType.string)
{
await initPlatformStateForStringUniLinks();
}
else
{
await initPlatformStateForUriUniLinks();
}
}
initPlatformStateForStringUniLinks() async
{
sub = getLinksStream().listen((String link)
{
latestLink …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个自动打开Android应用程序的网页,但仅在安装了应用程序的情况下.万一它不应该重定向到另一个网页.
该应用程序已经投入生产,正在正确处理深层链接example://content?id=42.链接的格式无法更改.
1)重定向和超时:
window.location.replace('example://content?id=42');
setTimeout(function() {
window.location.replace = 'http://example.com/content?id=42';
}, 500);
Run Code Online (Sandbox Code Playgroud)
适用于iOS,但对于Android,它会example://立即重定向,因此给了我ERR_UNKNOWN_URL_SCHEME.似乎不适合Android.
2)iframe方法.在rencent Chrome版本中不可能.也似乎不适用于三星浏览器.
3)关联结构与S.browser_fallback_url.效果很好但仅限Chrome.在Opera和三星浏览器中不起作用......除了Chrome 25+之外,其他任何地方都没有.
我的知名文件夹中有 assetlinks.json 文件。我在哪里可以找到 sha256_cert_fingerprints?
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.mobile.droid",
"sha256_cert_fingerprints": [
"where I can find it in google play console"
]
}
}
]
Run Code Online (Sandbox Code Playgroud)
我猜这是“应用程序签名证书”。这是正确的吗?
场景是用户将获得指向其电子邮件的链接。如果用户点击链接,如果应用程序已经安装,应用程序应该打开,如果应用程序没有安装它应该重定向到应用程序商店。
我已经看到了深层链接的实现,但我相信它也需要在后端进行更多的实现。任何人都可以对此提供帮助吗?
如果已安装,则重定向到应用程序,否则重定向到 App Store
经历了这一切。有没有更好的办法?
为另一种场景添加了 gif:
在下面的 gif 中,从电子邮件到应用程序直接导航?如何?
deep-linking ×10
android ×6
ios ×2
ajax ×1
asynchronous ×1
branch.io ×1
flutter ×1
javascript ×1
package ×1
request ×1
share ×1
uri-scheme ×1
widget ×1
xcode ×1