我们正在尝试实施Google的应用程序索引功能.我们使用以下格式的rel-alternate标记添加了指向我们网站的深层链接:
android-app://id.of.the.app/scheme/?screen=Product&product=123456
Run Code Online (Sandbox Code Playgroud)
现在我们收到内容不匹配抓取错误.如果我从这里使用二维码进行测试,一切正常.但是,如果我打开爬行错误,请单击"打开应用页面"并使用adb命令进行测试我可以看到从&符号开始的所有内容都没有传递到应用程序,因此无法加载我的产品数据.我怀疑爬虫是如何检查应用程序的内容的,这就是我们收到内容不匹配错误的原因.
此外,如果我使用搜索控制台中的"抓取为Google",则"&"符号中的所有内容都会被切断.
我检查了eBay,因为它正在使用他们的应用程序,这是他们正在使用的链接:
android-app://com.ebay.mobile/ebay/link/?nav=item.view&id=221559043026&referrer=http%3A%2F%2Frover.ebay.com%2Froverns%2F1%2F711-13271-9788-0%3Fmpcl%3Dhttp%253A%252F%252Fwww.ebay.com%252Fitm%252FRoxy-Fairness-Backpack-Womens-Red-RPM6-%252F221559043026%253Fpt%253DLH_DefaultDomain_0
Run Code Online (Sandbox Code Playgroud)
他们编写了&符号,&但如果我这样做并使用"Fetch as Google"功能测试它也不起作用.
这些用户似乎有同样的问题,但他们没有共享解决方案(如果他们找到了一个):
https://productforums.google.com/forum/#!msg/webmasters/5r7KdetlECY/enYknTVkYU4J https://productforums.google.com/forum/#!topic/webmasters/lswyXKlS-Ik
我很感激任何想法.
更新1
这就是我在解释Android应用中的深层链接的方式:
Uri data = getIntent().getData();
String scheme = data.getScheme();
if (scheme.equals("scheme")) {
String screen = data.getQueryParameter("screen");
if (screen.equals("Product")) {
String product = data.getQueryParameter("product");
// Open Product and give it product number as intent data
}
}
Run Code Online (Sandbox Code Playgroud)
更新2
这是我们Manifest.xml的相关部分:
<activity
android:name="id.of.the.app.StartActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_title"
android:windowSoftInputMode="adjustPan|stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<data android:scheme="scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" …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+之外,其他任何地方都没有.
我最近在我的应用中实施了Firebase动态链接.但是,当我按下动态链接时,虽然他们已经安装了应用程序,但是我的一些Android设备存在问题,这些设备被定向到Play商店.(它适用于其他设备,如Nexus 4,Samsung Note 4等)
所有Android设备都不支持Firebase动态链接感谢您的帮助!
编辑:经过进一步的研究后,我发现如果我将动态链接复制并粘贴到Chrome浏览器,那么通过单击WhatsApp等应用程序中的链接,它也无法正常工作.所以问题是chrome不会启动已安装的应用程序并将用户引导到Play商店.任何想法如何解决它?
谢谢!
我正在研究AngularJS的采访建议然后进行深层链接,但我无法理解为什么使用它,何时使用,以及它在angularjs中的建议是什么.
使用正常安装的应用程序,可以使用深度链接技术,不仅可以从URL打开特定应用程序,还可以将其重定向到特定的部分/功能,例如特定的Facebook帖子或地图上的特定坐标.
由于我已经阅读了Instant Apps,因此链接已经指向要下载和运行的特定模块,不仅可以访问所述模块而且还可以传递一些参数?
例如:
这是我的地图应用程序的仅查看模块将从其下载的链接:" www.myinstantappexample.com/onlyviewmap "
如果我希望它指向一组特定的坐标,那么链接将如何组成?会是这样的:" www.myinstantappexample.com/onlyviewmap/?x=0.000&y=0.000 "?
从我能够找到的谷歌没有涵盖这方面,我真的无法绕过它.
Android App Links仅适用于Android 6.0,与Android 4.2的Deep Links不同,但行为和编码有何不同?
我阅读了文档,但没有看到差异.
深层链接:https://developer.android.com/training/app-indexing/deep-linking.html
应用链接:https://developer.android.com/training/app-links/index.html
在反应本机上,我想在触发深度链接时打开一个模式并保留初始堆栈。
当应用程序处于前台或后台时它可以工作。
但是,当应用程序处于非活动状态并且深度链接被触发时,仅存在 AddStack。我无法关闭模式(TakePicture)并显示 MainStack(购买)。
如何将 MainStack 保持在模态后面?
我的深层链接是 app_scheme://purchases/purchase/new/:purchaseId
function App() {
const ref = useRef();
const logged = useSelector((state) => state.user.logged);
const { getInitialState } = useLinking(ref, {
prefixes: ['app_scheme://'],
config: {
AddStack: {
screens: {
TakePicture: {
path: 'purchases/purchase/new/:purchaseId',
parse: {
purchaseId: Number,
},
},
},
},
},
});
const [isReady, setIsReady] = useState(false);
const [initialState, setInitialState] = useState();
React.useEffect(() => {
Promise.race([
getInitialState(),
new Promise((resolve) =>
// Timeout in 150ms if `getInitialState` doesn't resolve
// Workaround …Run Code Online (Sandbox Code Playgroud) javascript deep-linking reactjs react-native react-navigation
我正在尝试实现深层链接来导航到应用程序上的帖子,这是一个较旧的项目,所以我必须添加该类SceneDelegate。仅当应用程序处于活动状态或在后台时,深层链接实现才有效。如果应用程序尚未加载,深层链接将不起作用。我看过很多关于此的帖子和教程,但没有找到原因,有人遇到过类似的问题吗?
在类中AppDelegate,我添加了实现来处理以下函数的链接:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {}
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {}
Run Code Online (Sandbox Code Playgroud)
在SceneDelegate我实现处理以下函数中的链接:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {}
func …Run Code Online (Sandbox Code Playgroud) 根据 Flutter 的官方深度链接页面,我们不需要任何插件或原生 Android/iOS 代码来处理深度链接。
但它并没有真正告诉我们如何从该链接获取数据。我是从编码的角度来谈论的。当然,他们在那里写道:
但这并没有告诉我应该在哪里编写什么代码才能真正获得完整的链接。我已经查找了示例/教程,但我找不到任何不使用插件来处理深度链接的内容。
现在,我所做的就是在文件<intent-filter>中添加标签AndroidManifest.xml,然后单击链接,我的应用程序就开始显示。但我不知道如何从该链接中提取数据。
有人可以在这里指导我吗?提前致谢。
deep-linking ×10
android ×6
ios ×2
javascript ×2
angularjs ×1
appdelegate ×1
applinks ×1
firebase ×1
flutter ×1
nsurl ×1
react-native ×1
reactjs ×1
routes ×1
swift ×1