标签: deep-linking

我试图通过adb测试Android深层链接网址来启动我的应用程序

当我在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)

android deep-linking adb android-manifest

38
推荐指数
11
解决办法
4万
查看次数

iOS上的通用链接与深层链接(URL方案)

在我阅读时,iOS 9引入了Universal Links.在Apple的App Search Programming Guide中的"支持通用链接"部分中,它说这与URL方案的深层链接不完全相同,但我不完全清楚这个主题:

  • Universal Link和URL Schemes之间的实际差异是什么?环球链接仅适用于网站,邮件或消息应用程序中的超链接吗?
  • Universal Links是否取代了URL方案?
  • Universal Links是一种深层链接吗?

url-scheme deep-linking ios ios9 ios-universal-links

35
推荐指数
4
解决办法
3万
查看次数

移动Safari页面卸载/隐藏/模糊深度链接

我正在寻找一个关于移动safari的事件,它将检测页面因重定向而被隐藏的时间.我想直接打开我的应用程序,如果用户安装了它,然后尝试facebook,如果它已安装,如果没有,然后转到该网页获取该ID.

  1. 如果安装了"myapp",则打开myapp.但是safari标签仍然会被重定向到facebook.com
  2. 如果没有安装'myapp',但facebook是,则打开facebook ios app.但是safari标签仍然会被重定向到facebook.com

我用以下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 safari mobile-safari deep-linking ios

28
推荐指数
1
解决办法
5289
查看次数

我可以在没有网页滚动的情况下更新window.location.hash吗?

使用JavaScript,有没有办法更新window.location.hash而无需滚动网页?

我有可点击的标题元素,可以直接在它们下方切换div的可见性.单击标题但我不希望页面滚动时,我想要历史记录中的/ foo #bar.因此,当离开/ foo #bar导航时,我将能够使用后退按钮,并且在返回时可以看到其ID在window.location.hash中的div.

这种行为可能吗?

javascript back-button deep-linking browser-history

26
推荐指数
4
解决办法
3万
查看次数

Android Deep Linking问题!如何使用自定义URL方案myapp:// some_data

我试过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)

android deep-linking

24
推荐指数
2
解决办法
3万
查看次数

将移动浏览器深层链接到本机应用程序 - 未安装应用程序时Chrome的问题

我有一个网页,我们可以打电话给它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时进行深层链接.

谢谢大家!


更新:

我找到了一个不错的解决方案,并回答了我自己的问题 看到我的解决方案的已接受答案

javascript deep-linking mobile-website mobile-chrome

24
推荐指数
2
解决办法
3万
查看次数

如何为Branch.io提取Sha256 Cert指纹

我正在尝试将深层链接与branch.io集成.但为了做到这一点.我需要提取SHA256证书指纹,将它们放在我的branch.io仪表板中.我该怎么做呢?我的证书是什么?关于如何完成这些工作的数据太少.

android deep-linking twitter-fabric branch.io deeplink

23
推荐指数
4
解决办法
2万
查看次数

Facebook Messenger的自定义URI方案

鉴于Facebook 最近" 鼓励 "迁移到单独的Messenger应用程序,并作为Facebook应用程序支持的URL/URI方案问题的{非常丰富的!} 答案的后续,我一直想知道是否有关于Facebook的Messenger应用自定义协议fb-messenger://可用.

我正在寻找的功能是能够点击一个按钮,该按钮可以与已知数字Facebook ID的用户打开FB-messenger聊天窗口.如果Facebook应用程序(katana)未安装在设备上(即只有信使,orca),这也需要工作.

我找到了所需深度链接()的示例,但这似乎不起作用.我意识到FB有一种偶尔修改URI的倾向,因为这些通常不应该对公众开放(据我所知).fb-messenger://user-thread/{user-id}

android uri deep-linking facebook-messenger

22
推荐指数
2
解决办法
3万
查看次数

如何使用url打开ios app?

我想使用URL方案打开我的ios应用程序.我可以用这个打开app.但我想如果没有安装应用程序,那么应该打开应用程序商店,用户可以下载应用程序.这可能吗?我怎样才能做到这一点?

编辑 逐步解释问题:

  1. 我的收件箱里有一封邮件,上面有一个网址.
  2. 我点击URL然后我.如果应用程序安装在手机中,应用程序将启动.II.否则将打开应用程序商店下载应用程序.

谢谢

url-scheme deep-linking ios

22
推荐指数
2
解决办法
3万
查看次数

首次从appstore安装应用时,Firebase动态链接无效

我正在使用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 ios firebase swift firebase-dynamic-links

21
推荐指数
1
解决办法
2369
查看次数