DeepLink技术实战:从原理到场景化应用全解析

iOS 深度跳转(scheme、universal link) 网上看到这篇文章,觉得可以,这里转载记录一下。 一、前言 首先,我们先来聊一下深度跳转时什么,有哪些方面可以运用。 点击wap页面按钮,唤起对应APP,并且跳转到了相对于的目标页面。比如:微信里浏览商品,点击打开APP,会自动唤起手机里的对应APP,并且会进入到你刚才浏览的商品详情页。 这就是比较直观的:深度跳转 上面的这种情况我们称之为:一键直达(或者一链拉起等,你怎么称呼你开心就好😊) 如果,手机没有安装京东APP,是会先去下载页面,待用户下载完后,点击打开APP依然会跳转到刚 阅读详情

1. DeepLink技术初探:为什么你的App需要这个"任意门"?

记得去年我做电商项目时遇到一个头疼的问题:用户从微信分享的商品链接点击后,总是跳到App首页而不是商品详情页,导致转化率直接掉了30%。后来我们接入了DeepLink技术,用户点击链接就能精准跳转到商品页,转化率瞬间回升甚至还提升了15%。这就是DeepLink技术的魔力——它就像是给你的App安装了一个"任意门",让用户从哪里来就能直接到哪里去。

DeepLink本质上是一种特殊的URL协议,它允许用户通过点击链接直接跳转到应用内部的特定页面,而不是每次都从启动页开始。想象一下,你在朋友圈看到朋友分享的抖音视频,点击后直接就能在抖音App里观看这个视频,而不是先打开抖音再手动搜索——这就是DeepLink的典型应用场景。

在实际开发中,DeepLink主要分为两种形式:一种是基于自定义Scheme的经典方案(如myapp://product/123),另一种是基于HTTP/HTTPS的Universal Link和App Links。前者兼容性好但容易被平台限制,后者体验更流畅但需要额外的域名配置。我建议新手先从自定义Scheme入手,等业务稳定后再升级到Universal Link。

2. 原理解密:DeepLink是如何实现精准跳转的?

2.1 Android平台的实现机制

在Android系统中,DeepLink依赖于Intent Filter机制。当你在AndroidManifest.xml中声明了Intent Filter后,系统就会知道你的App能够处理特定格式的链接。具体配置是这样的:

<activity android:name=".ProductDetailActivity">
    <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="myapp"
            android:host="product"
            android:pathPrefix="/detail" />
    </intent-filter>
</activity>

这段代码告诉系统:当用户点击以myapp://product/detail开头的链接时,就直接启动ProductDetailActivity。在实际处理中,我们需要在Activity的onCreate方法中解析Intent携带的参数:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    
    intent?.data?.let { uri ->
        val productId = uri.getQueryParameter("id")
        val source = uri.getQueryParameter("utm_source")
        // 根据参数加载对应的商品详情
        loadProductDetail(productId, source)
    }
}

2.2 iOS平台的实现方案

iOS平台主要通过URL Scheme和Universal Link两种方式。URL Scheme的配置在Info.plist中进行:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
        <key>CFBundleURLName</key>
        <string>com.myapp.bundle</string>
    </dict>
</array>

处理跳转的逻辑在AppDelegate中:

func application(_ app: UIApplication, 
                 open url: URL, 
                 options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    
    guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true),
          let queryItems = components.queryItems else {
        return false
    }
    
    if components.host == "product" {
        let productId = queryItems.first(where: { $0.name == "id" })?.value
        // 跳转到商品详情页
        navigateToProductDetail(productId: productId)
        return true
    }
    
    return false
}

Universal Link的配置更复杂一些,需要配置apple-app-site-association文件并部署到网站的.well-known目录下,但好处是在iOS 9以上系统可以获得更好的用户体验。

3. 进阶技巧:Deferred DeepLink的魔法

Deferred DeepLink(延迟深度链接)是我认为最值得投入的技术之一。它解决了这样一个痛点:当用户没有安装App时,点击链接后先引导下载,安装完成后首次打开仍然能跳转到目标页面。

实现Deferred DeepLink的关键在于设备指纹匹配技术。当用户点击链接时,我们在后台收集设备的特征信息:IP地址、User-Agent、屏幕分辨率、语言设置等,生成一个设备指纹。等用户安装App后首次启动时,App会上报设备信息,服务器进行匹配后返回最初要跳转的页面路径。

这里有个实际案例:我们为电商App做的促销活动中,用户点击朋友圈的商品链接后,如果未安装App会跳转到App Store,安装后首次打开直接显示那个商品页面。这个功能让转化率提升了40%,因为用户不会在下载完App后迷失方向。

设备指纹的采集需要特别注意用户隐私问题。我们通常只收集非敏感信息,并且要符合GDPR和国内的相关法规。在实际实现中,我们可以这样处理:

// H5页面采集设备信息
const deviceFingerprint = {
    userAgent: navigator.userAgent,
    screenResolution: `${screen.width}x${screen.height}`,
    language: navigator.language,
    timezone: new Date().getTimezoneOffset(),
    // 其他非敏感信息
};

// 发送到后端进行记录
fetch('https://api.example.com/track', {
    method: 'POST',
    body: JSON.stringify(deviceFingerprint)
});

4. 实战应用:多场景下的DeepLink解决方案

4.1 电商场景的精准营销

在电商行业中,DeepLink已经成为标配技术。我们为某大型电商平台实现的方案包括:商品分享链接(taobao://item?id=123)、优惠券页面(taobao://coupon/456)、活动页面(taobao://promo/blackfriday)等。每个链接都携带来源参数,方便进行数据统计和效果分析。

实践中我们发现,在微信环境中需要特别注意兼容性问题。微信对自定义Scheme链接有限制,我们的解决方案是:先引导用户用浏览器打开,然后在浏览器中触发DeepLink。虽然多了一步操作,但相比完全无法跳转,这种方案至少保证了功能的可用性。

4.2 社交应用的病毒传播

社交类App是DeepLink的另一个重要应用场景。我们为社交App实现了邀请链接功能:用户A生成邀请链接分享给用户B,用户B点击后如果已安装App则直接进入聊天界面,如果未安装则先下载再跳转。

这个功能的关键在于邀请码的传递。我们采用剪贴板方案作为备用方案:在H5页面中将邀请码复制到剪贴板,App启动时检查剪贴板内容。虽然iOS对剪贴板的访问有限制,但在大多数情况下仍然可用。

4.3 内容型App的阅读体验

对于新闻、视频等内容型App,DeepLink能够显著提升分享体验。用户分享的文章链接可以直接跳转到对应的内容页面,而不是App首页。我们为某新闻客户端实现的方案中,不仅支持跳转到具体文章,还支持跳转到特定栏目、搜索关键词等场景。

5. 避坑指南:常见问题与解决方案

在实际开发DeepLink功能时,我踩过不少坑,这里分享几个最常见的问题和解决方案。

坑一:微信中无法直接唤醒App 这是最常见的问题,微信出于安全考虑限制了自定义Scheme的唤醒能力。我们的解决方案是引导用户使用浏览器打开:

  1. 在H5页面中检测是否在微信内打开
  2. 如果是,显示引导提示和"在浏览器打开"按钮
  3. 用户点击后跳转到浏览器,在浏览器中触发DeepLink

坑二:多个App注册相同Scheme 当多个App都注册了相同的Scheme时,系统会弹出选择框让用户选择。为了避免这种情况,建议使用公司域名倒置的方式定义Scheme(如com.myapp.product),降低冲突概率。

坑三:参数传递中的特殊字符处理 在URL中传递参数时,需要对特殊字符进行编码解码。我们曾经因为一个参数中包含"&"字符导致整个参数解析失败。现在的做法是统一使用URL编码:

// 编码
String encodedValue = URLEncoder.encode(originalValue, "UTF-8");

// 解码  
String decodedValue = URLDecoder.decode(encodedValue, "UTF-8");

坑四:Android和iOS的差异处理 两个平台在DeepLink的实现上有些细微差异,需要在后端根据User-Agent生成不同的链接格式。我们的做法是:

function generateDeepLink($path, $params) {
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    
    if (strpos($userAgent, 'Android') !== false) {
        // Android使用intent格式
        return generateAndroidIntentLink($path, $params);
    } else if (strpos($userAgent, 'iPhone') !== false) {
        // iOS使用Universal Link
        return generateiOSUniversalLink($path, $params);
    } else {
        // 默认使用自定义Scheme
        return generateCustomSchemeLink($path, $params);
    }
}

6. 性能优化:让DeepLink更快更稳定

DeepLink的性能直接影响用户体验,我们在实践中总结了几条优化建议。

优化一:减少重定向次数 尽量避免多次重定向,每次重定向都会增加延迟。我们的最佳实践是:最多只做一次重定向,直接从落地页跳转到App或应用商店。

优化二:使用CDN加速链接解析 对于Deferred DeepLink中的设备指纹匹配服务,我们将其部署在全球CDN上,减少网络延迟。实测下来,亚洲用户的平均响应时间从500ms降低到了100ms以内。

优化三:客户端缓存路由配置 我们将常见的链接路径缓存在客户端,避免每次都需要向服务器查询如何解析链接。只有当遇到未知的链接格式时,才向服务器请求解析规则。

优化四:监控和告警 我们建立了完整的监控体系,跟踪DeepLink的成功率、延迟等指标。当成功率低于99.9%或延迟超过200ms时,系统会自动告警,团队能够快速响应。

7. 安全考虑:保护用户隐私和数据安全

DeepLink虽然方便,但也带来了一些安全风险。我们在实践中采取了多项措施来保障安全。

措施一:参数签名验证 对所有DeepLink的参数进行签名验证,防止参数被篡改。我们使用HMAC-SHA256对参数进行签名,服务器端验证签名的有效性。

措施二:敏感信息加密 对于包含用户ID等敏感信息的参数,我们使用AES加密后再传输,避免在URL中明文传递敏感数据。

措施三:有效期控制 DeepLink链接设置有效期,通常为24小时。过期后的链接不再处理,防止旧链接被恶意利用。

措施四:访问频率限制 对每个设备ID或IP地址的DeepLink访问频率进行限制,防止恶意刷量。

在实际项目中,我们还建立了安全审计机制,定期检查DeepLink的使用情况,及时发现和处理异常行为。

8. 未来展望:DeepLink技术的发展趋势

随着技术的不断发展,DeepLink也在进化。我认为未来有几个重要的发展方向。

方向一:跨平台一致性 苹果的Universal Link和谷歌的App Links正在推动DeepLink的标准化。未来开发者可能只需要配置一次,就能在两个平台上获得一致的体验。

方向二:与AI技术的结合 通过AI算法改进设备指纹识别技术,提高Deferred DeepLink的匹配准确率。我们正在试验使用机器学习模型来识别设备,即使用户更换了网络环境也能准确匹配。

方向三:小程序与原生App的无缝连接 随着小程序生态的发展,如何实现小程序与原生App之间的无缝跳转成为一个重要课题。各大平台都在推出自己的方案,如微信的OpenSDK、支付宝的小程序跳转App等。

方向四:更丰富的上下文传递 未来的DeepLink不仅能够传递简单的参数,还能传递更丰富的上下文信息,如用户的操作历史、偏好设置等,为用户提供更加个性化的体验。

我在实际项目中感受到,DeepLink技术已经成为移动应用生态的基础设施。掌握好这项技术,不仅能够提升用户体验,还能为业务增长提供强大助力。刚开始接触时可能会觉得配置复杂,但一旦跑通整个流程,就会发现其实没有想象中那么难。最重要的是在实际项目中多实践,遇到问题就查阅官方文档或者参考开源项目的实现方案。

手把手教你用Scheme和Universal Link实现iOS App深度跳转 本文详细解析了在iOS开发中实现App深度跳转的两种核心技术:Custom URL Scheme与Universal Link。通过对比分析两者的优劣,提供了从基础配置、服务端部署到客户端处理的完整实践指南,并分享了电商场景下的路由设计、智能降级策略及高级疑难问题解决方案,帮助开发者构建稳定高效的深度链接体系。 阅读详情

相关推荐

深度链接LinkedME与Deeplink

一、前言 介绍 LinkedME是国内首家企业级深度链接服务提供商,致力于帮助移动APP解决用户增长和流量变现的问题。 LinkedME提供“一键活跃”,“场景还原”,“场景运营”等功能,大大提供APP的活跃度,更好地解决流量变现。致力于打造App与App之间的桥梁,感知用户行为,引发场景消费。 作用 由于苹果公司设立的安全机制限制了各APP之间的信息交互,LinkedMe使用D

Coach_Lee的专栏 6154

DeepLink 在转转的实践

1. DeepLink 简介2 .应用场景2.1 IOS 应用场景2.2 安卓应用场景3. DeepLink 服务3.1 投放链接设计3.2 打包&下载4. 总结1. DeepLink 简介DeepLink:“深度链接”技术,这个名词初看比较抽象,不过在我们身边却有不少应用,比如以下场景:刷抖音看到转转的广告,点击视频下方的下载链接,如果没有安装转转则下载转转,并...

大转转FE 1080

SOI技术实战:从晶圆结构到芯片性能提升的完整解析

本文深入解析SOI(Silicon on Insulator)技术如何通过独特的三明治晶圆结构提升芯片性能,涵盖从220nm SOI层设计到7nm节点的工艺挑战。详细探讨了埋氧层的绝缘优势、性能提升的物理机制,以及AMD处理器和5G射频中的实战应用,为半导体行业提供关键技术洞见。

wdx0123456的博客 962

Deeplink(深度链接)拉起App,我是这样做到的

移动互联网时代,信息的分享传播无疑是 App 引流增长的关键,与其花费大量精力和成本找渠道、硬推广,不如从细节下手,用最快最简便的方法实现 Deeplink(深度链接)技术,打破信息孤岛、缩短分享路径、优化用户体验,最终提高流量转化率和留存率。 什么是 DeepLink(深度链接)技术 如果把 App 看成网站,那么 DeepLink 就是网站中的深入页面,比如商品购物页面、活动促销页面。简单理解...

weixin_43652781的博客 2万+

深度学习 tesorflow2.0版本 入门第一章

为什么要学tensflow 深度学习发展迅猛 框架灵活 google开发 公司应用广泛 2.0更加灵活 后面会学习的项目 图像分类 房价预测 泰坦尼克号生存预测 文本分类 文本生成 机器翻译 核心部分 模型训练 tesorboard----> 查看模型训练进度 模型保存和部署 分布式训练-----> 加速训练速度,提升训练效率 TensorFlow常用库:Tfds, tfhub,tensor2tensor 多平台云端环境GPU:Goolgle cloud环境配置,AWS环境配置 kaggle平

weixin_46969441的博客 1238

HDRnet——双边滤波和仿射变换的摇身一变

layer层数越多,下采样得到的图越小,low-level features的好处是最后的grid会更coarser,最后的特征图的感受野也越多,非线性更好,表达力更强。所以最终grid是5维的[B,in*out,n,H,W],permute之后是[B,H,W,n,in*out],B是batchsize,n表示对guide的量化级数,in*out表示每个cell的变换系数。这部分的处理对象是低分辨率图,利用CNN进行特征提取(局部和全局),最后fuse得到grid,这里面包含了变换的系数。

zcg1942的博客 1578

Electron-OH 37.2.1版本跨平台开发框架解析

跨平台开发框架是现代应用开发的核心技术,通过抽象底层系统差异实现代码复用。Electron-OH作为鸿蒙生态下的创新方案,采用NodeHandle架构重构了系统交互层,显著提升性能指标。在工程实践中,该框架支持Web技术栈开发原生体验应用,特别优化了窗口管理和IPC通信,延迟降低40%以上。典型应用场景包括视频会议系统、实时协作工具等需要高性能渲染的领域,其中1080P视频流解码效率提升2倍的实测数据尤为亮眼。对于开发者而言,这种融合了Web生态与原生能力的解决方案,大幅降低了鸿蒙PC应用的开发门槛。

weixin_30086969的博客 320

C语言 在合并编译 ( 多.c文件 ) 情况下 实现 linked list ( 链表 ) 教程 . 更新ing

写在前面  依旧是参考借鉴了 浙江大学 温老师 的视频教程,很不错,在中国大学MOOC上,强力推荐!  虽说有借鉴,但是能保证的是每一行代码都是我自己经过理解后手敲出来的,所以才来做了这部分的教程。  最后,带 * 字符是我个人觉得可以添加的功能,按理来讲是可以不看的,而且大概率是可以有更好的改进的。  PS: 文章还在更新,如果文字蓝了(有超链接),说明写完了,如果没蓝,说明我在开军舰.jpg 源代码:  这里→源代码. 第一步:前置工作  先说一下每一篇都会出现 main 函数的,stage1 只是给没

weixin_47287635的博客 527

CC Switch技术深度解析:跨平台AI编程工具统一管理架构与性能优化实践

CC Switch作为一款跨平台桌面级AI编程工具统一管理助手,专为需要同时管理Claude Code、Codex、OpenCode、OpenClaw、Gemini CLI、Claude Desktop和Hermes Agent等多款AI编程工具的中高级开发者设计。本文将从技术架构、性能优化、配置策略等多个维度深入剖析CC Switch的核心实现原理,为技术团队提供部署调优和二次开发的参考指南。

gitblog_00334的博客 470

深入理解EtherCAT状态机:从IGH代码看伺服电机如何从‘上电’到‘使能’

本文深入解析EtherCAT状态机的工作原理,重点探讨伺服电机从'上电'到'使能'的状态转换过程。通过分析状态字(Status Word)和控制字(Control Word)的交互机制,结合IGH代码实例,揭示DS402状态机的核心逻辑,帮助工程师解决60%以上的伺服控制问题,提升EtherCAT网络调试效率。

weixin_42549037的博客 290

什么是 AIDV(AI 定义汽车):从软件定义到智能决策的范式革命

AI定义汽车(AIDV),是指以人工智能(尤其是大模型、深度学习、强化学习)为核心引擎,以车载AI芯片为算力底座,以“数据闭环”为迭代支撑,重构汽车感知、决策、执行全链路,实现“感知智能化、决策自主化、体验个性化、迭代自动化”的新一代智能汽车发展范式。其核心是让汽车从“执行工具”升级为“具备自主学习与智能决策能力的移动智能终端”,核心价值是“车与人的深度协同”与“复杂场景的自主适配”。

getusushu的博客 97

Android deeplink原理解析

一、什么是DeepLink 移动端深度链接,简称deeplink。这是一种通过uri链接到app特定位置的一种跳转技术,不单是简单地通过网页、app等打开目标app,还能达到利用传递标识跳转至不同页面的效果。 二、原理分析 deeplink的scheme相应分两种:一种是只有一个APP能相应,另一种是有多个APP可以相应,比如,如果为一个APP的Activity配置了http scheme类型的deepLink,如果通过短信或者其他方式唤起这种link的时候,一般会出现一个让用户选择的弹窗,因为一般而言,系

分享Android开发知识 7208

【微信小程序-uniapp】CustomPicker 自定义单项选择器组件

自定义底部弹出框单项选择器组件,适用于uniapp小程序

Komorebi_00的博客 1533

拉起客户端 Universal Links & Scheme Open App iOS(Deep Link)

语言: swift, 版本:4.2,XCode:10.1 写作时间:2019-02-11 Scheme打开App 以前用Scheme方式打开app用类似于 taobao:// 这种方式,配置如下: 验证:在Safari输入链接:zscheme:// 就可以打开app Alert提示host的内容, 在 AppDelegate.swift 添加如下代码: func application(_ a...

AI架构师易筋 3979

编写python脚本调用ordinals以及BRC20的接口

1、钱包地址生成walletreceive,对应ord命令:ord wallet receive。6、测试手动出块generate,这个只在regtest链节点用得上。所有接口都是post请求,采用postman进行测试。4、测试bitcoin转币sendtoaddress。7、测试其他的wallet方法wallet。2、钱包币种铭刻inscription,对应bitcoin-cli命令。对应bitcoin-cli命令。对应bitcoin-cli命令。fee.json文本模板。还可以加很多根据需要加减。

云深海阔专栏 1049

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

极光小课堂 | iOS 深度跳转——scheme 与 universal link)

一、前 言首先,我们来聊一下深度跳转时,有哪些方面可以运用。点击 wap 页面按钮,唤起对应 APP,并且跳转到了相对应的目标页面。比如:微信里浏览商品,点击打开 APP,会...

极光开发者 2684

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

深度链接(Deeplink)是什么?

深度链接(Deeplink)是泛用性极高的一项通用技术,在我们日常生活中非常容易接触到。比如: 在微信或QQ上接收到好友分享的网页; 在短信上接收到的营销短信; 在某头条、某音上刷到信息流广告… 当你点击这些渠道进入web详情页后,点击打开会自动跳转至App目标页面。这个点击后自动跳转的过程就用到了深度链接(Deeplink)技术。 一、什么是深度链接(Deeplink)技术? “Deeplink”又名“深度链接”,是一种能将用户直接从网页带到App指定页面的技术。 目前广义上的“深度链接”概念包含了

weixin_43652781的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

DeepLink用法及源码解析

终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 1. 简介 DeepLink官网上有这样的解释: When a clicked link or programmatic request invokes a web URI intent, t...

weixin_34258078的博客 1075

客户端deeplink技术

Deeplink,简单讲,就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页。不似web,一个链接就可以直接打开web的内页,app的内页打开,必须用到deeplink技术。

NeilYi007的博客 7478

【基础知识】现在很火的app上的deeplink技术,到底是什么?

主编前言: Deeplink,简单讲,就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页。不似web,一个链接就可以直接打开web的内页,app的内页打开,必须用到deeplink技术。什么是deeplink技术?如何实现的?郭宇洋的这篇文章有非常轻松易懂的说明,并且还提供了相当不错的参考资料。 目录 一、Deeplink 1、技术 2、标准&生态 二、Deeplink与在线展示广告(移动端) 一.Deeplink 1.技术   先

键盘的起始页 3599

微信又双叒更新了!这次深度链接deeplink能搞点什么大事情?

7月17日,微信在iOS系统上更新了7.0.5版本,对于用户而言本次更新主要是可以把收藏的笔记、文件等页面设为浮窗,更方便重要信息的查阅。此次更新之前,微信悬浮窗仅能保留一个页面,更新之后最多可以同时保留5个不同的页面。 不过对于开发者来说,最好的消息并不是这个,而是此版本解除了iOS系统层面Universal Link技术的限制! 相信很多人在用微信跳转到App的时候都会遇到一...

Mobholly的博客 3190

Deeplink最全解析

在智能手机上,用户平均超过86%的时间都是花在各个 App 中的,而各个 App 之间又是独立运作的,只能用 web 进行连接,或者通过浏览器的 WebView 进行受限的内容跳转,实际上缺少原生的 App 体验。这是由于移动端操作系统、各个应用的底层技术、调用方式、代码等层面各不相同造成的割裂性,我们今天要讲的 Deeplink(深度链接)正是解决 App 间自由跳转的技术。 Deeplink 又叫深度链接,是一项减少运营难度的技术,它在手机上的应用场景十分广泛,你可能没听过,但你一定见过它的相关应用场

lizhong 1万+

Hybrid App 移动端踩坑录:键盘、视口与阿拉伯语

Hybrid App 中软键盘遮挡问题根源在于布局视口与视觉视口不一致。针对输入框被盖,自研 KeyboardObserver 通过轮询 visualViewport.height、innerHeight、scrollY 及 getBoundingClientRect() 四个信号交叉验证键盘状态,结合 iOS 延迟滚动、Android 快速响应的分策略,实现精准定位。针对底部按钮被盖,用 CSS 变量 --pageHeight 动态绑定 window.innerHeight,替代 100vh,并配合 ca

山雀的博客 358

Flutter 三方库 gesturesshare 从 0 到 1:鸿蒙隔空传送分享插件的开发、升级与发布实战

本文详述了 Flutter for OpenHarmony 三方库 gesturesshare 从零开发到发布全过程:基于 HarmonyOS 隔空传送能力,实现跨设备图片与 App Linking 一键分享。涵盖双端代码设计、API 26 升级、真机验证及 Pub 发布流程,提供 Dart/ArkTS 对照与踩坑复盘。项目填补 Flutter 生态空白,推动鸿蒙多设备交互能力普及,助力开发者快速接入系统级功能。

白天写代码,晚上追AI大模型,偶尔搞点八卦 开源动态|技术干货|实习机会|生态活动 我负责分享,你负责变强 28

自建 RustDesk 服务端后,做一个“装完就能连“的客户端

目前市面上的远程工具(如向日葵、toDesk等)免费版基本上都卡的不行,而且收费版好像也会卡。如果有云服务的话,可以基于 RustDesk 的 hbbs / hbbr 自己部署一套,不过会碰到一个问题:每台电脑装完客户端,都得手动去设置里填三样东西——ID 服务器、中继服务器、Key。填错一个就连不上,还得远程指导同事操作。这篇记录两种解决办法,以及云端编译的完整流程。内容基于 RustDesk 1.5.3 的源码。

风声的专栏 591
上一篇: 从/proc文件系统窥探Android硬件状态:一个AHD摄像头检测的工程实践
下一篇: 树莓派UART的隐藏技能:解锁16进制数据流与硬件黑客的创意实验
sql99
博客等级 码龄19年 168粉丝 1905原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值