当我在adb中键入命令时:
./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos pkg=com.myapp }
Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=example://gizmos flg=0x10000000 pkg=com.myapp }
Run Code Online (Sandbox Code Playgroud)
但是当我在adb中输入命令时:
./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp.activity.DeepLinkActivity
Run Code Online (Sandbox Code Playgroud)
一切正常,我收到消息,我可以在手机上看到活动的启动:
Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos cmp=com.myapp.activity.DeepLinkActivity }
Status: timeout
Activity: com.myapp.activity.DrawerActivity
Complete
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么我需要获得我的活动的完整路径,而不仅仅是包名?因为当外部应用程序或浏览器尝试深层链接时,它们不会调用我的应用程序中的活动.
这是我的AndroidManifest.xml
<activity
android:name=".activity.DeepLinkActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="example"
android:host="gizmos" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud) 在我阅读时,iOS 9引入了Universal Links.在Apple的App Search Programming Guide中的"支持通用链接"部分中,它说这与URL方案的深层链接不完全相同,但我不完全清楚这个主题:
我正在寻找一个关于移动safari的事件,它将检测页面因重定向而被隐藏的时间.我想直接打开我的应用程序,如果用户安装了它,然后尝试facebook,如果它已安装,如果没有,然后转到该网页获取该ID.
我用以下HTML/JS 创建了一个测试链接:
<!DOCTYPE html>
<html>
<head>
<title>Redirect Test</title>
<script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script>
<meta name='viewport' content='initial-scale = 1.0,maximum-scale = 1.0' />
</head>
<body>
<button>Open Oreo</button>
<script type='text/javascript'>
jQuery(function(){
jQuery( 'button' ).on( 'click', function(){
var myid = null, fbid = null;
// Watch for page leave to kill timers
jQuery( window ).on( 'pagehide pageshow blur unload', function(){
if ( myid ) {
clearTimeout( myid );
}
if ( fbid ) {
clearTimeout( fbid );
}
}); …Run Code Online (Sandbox Code Playgroud) 使用JavaScript,有没有办法更新window.location.hash而无需滚动网页?
我有可点击的标题元素,可以直接在它们下方切换div的可见性.单击标题但我不希望页面滚动时,我想要历史记录中的/ foo #bar.因此,当离开/ foo #bar导航时,我将能够使用后退按钮,并且在返回时可以看到其ID在window.location.hash中的div.
这种行为可能吗?
我试过link1,link2,link3,link4,link5,link6
以下是有关DeepLinking的所有内容
我想要的是自定义uri myapp:// some_data,打开设备中安装的本机应用程序,需要some_data初始化应用程序.
有两种方案可以单击自定义URL.
1)在SMS应用程序内,当用户点击链接时,它应自动打开已安装的,否则打开应用程序托管的googleplay商店
2)从电子邮件正文中.
我已经尝试了以上列出的所有链接,但它们都不适用于我.我对方案部分有重大问题.
这是我的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="inderbagga" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
这是MainActivity.java
TextView tvText=(TextView)findViewById(R.id.tvid);
if (getIntent().getAction() == Intent.ACTION_VIEW&&getIntent().getScheme().equals("inderbagga")) {
Toast.makeText(getApplicationContext(), ""+getIntent().getScheme(), Toast.LENGTH_SHORT).show();
Uri uri = getIntent().getData();
// do stuff with uri
tvText.setText(uri.toString());
}
else …Run Code Online (Sandbox Code Playgroud) 我有一个网页,我们可以打电话给它entry.html.
当用户进入此页面时,javascript代码(见下文)正在尝试将用户深层链接到本机iOS/Android应用程序.
如果深层链接失败(可能是因为设备上没有安装应用程序),用户应该"退回"到另一个页面 - 让我们调用它fallback.html.
这是运行的javascript代码entry.html:
$(function(){
window.location = 'myapp://';
setTimeout(function(){
window.location = 'fallback.html';
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
这是一种标准的深层链接方法,建议在整个网络中使用; 尝试深层链接,如果超时触发它意味着深层链接没有发生 - 所以回退.
这很好用,因为设备上安装了很长的应用程序.
但是如果没有安装应用程序,这是尝试深层链接时的行为:
移动Safari:我看到一条警告消息说"Safari无法打开此页面......"片刻,然后它正确地回落fallback.html- 这是预期的行为.
移动Chrome是我的问题.
当没有安装应用程序时,浏览器实际上被重定向到myapp://网址,这当然是无效的 - 所以我得到一个"未找到"页面,并且不会发生回退.
最后 - 我的问题是:
如何修复我的代码,以便FALL-BACK也会在移动Chrome上发布?就像移动Safari一样?
注意:我看到LinkedIn移动网站正确地使用Safari和Chrome,无论是否安装了应用程序,但我无法追踪负责它的代码:(
注意2:我尝试添加一个iframe而不是window.location = url,这只适用于Safari,即使安装了应用程序,移动Chrome也不会在追加iFrame时进行深层链接.
谢谢大家!
更新:
我找到了一个不错的解决方案,并回答了我自己的问题 看到我的解决方案的已接受答案
我正在尝试将深层链接与branch.io集成.但为了做到这一点.我需要提取SHA256证书指纹,将它们放在我的branch.io仪表板中.我该怎么做呢?我的证书是什么?关于如何完成这些工作的数据太少.
鉴于Facebook 最近" 鼓励 "迁移到单独的Messenger应用程序,并作为Facebook应用程序支持的URL/URI方案问题的{非常丰富的!} 答案的后续,我一直想知道是否有关于Facebook的Messenger应用自定义协议的fb-messenger://可用.
我正在寻找的功能是能够点击一个按钮,该按钮可以与已知数字Facebook ID的用户打开FB-messenger聊天窗口.如果Facebook应用程序(katana)未安装在设备上(即只有信使,orca),这也需要工作.
我找到了所需深度链接()的示例,但这似乎不起作用.我意识到FB有一种偶尔修改URI的倾向,因为这些通常不应该对公众开放(据我所知).fb-messenger://user-thread/{user-id}
我想使用URL方案打开我的ios应用程序.我可以用这个打开app.但我想如果没有安装应用程序,那么应该打开应用程序商店,用户可以下载应用程序.这可能吗?我怎样才能做到这一点?
编辑 逐步解释问题:
谢谢
我正在使用Firebase动态链接来共享我的应用程序(> = IOS 9)并邀请人们参加活动(我的意思是,如果你有应用程序,你可以加入DeepLink的活动,如果你没有它,我会在加入活动之前将您送到appstore下载应用程序).
我按照Firebase文档步骤操作:
这是我在第一次安装时获取链接的代码:
在didFinishLaunchingWithOption:
FIROptions.default().deepLinkURLScheme = "com.jerem.ProjectAlphaSasasa"
// "com.jerem.ProjectAlphaSasasa" is my app bundle Identifier
FIRApp.configure()
Run Code Online (Sandbox Code Playgroud)
并且基于Firebase文档,在首次打开时,我使用以下功能:
//MARK: First entry
//when your app is opened for the first time after installation on any version of iOS.
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
print("00000000000000000")
FIRCrashMessage("Link during first installation")
downloadEventWithDeepLink = true
downloadUrl = url
return application(app, open: url, sourceApplication: nil, annotation: [:])
} …Run Code Online (Sandbox Code Playgroud) deep-linking ×10
android ×4
ios ×4
javascript ×3
url-scheme ×2
adb ×1
back-button ×1
branch.io ×1
deeplink ×1
firebase ×1
ios9 ×1
safari ×1
swift ×1
uri ×1