新闻详情

新闻详情

首页 / 资讯中心 / 详情

AppsFlyer延迟深度链接接入实战:Android/iOS客户端完整指南

发布时间:2026/10/2 17:46:42来源:尧图网络
AppsFlyer延迟深度链接接入实战:Android/iOS客户端完整指南
1. 从一次“用户流失”说起延迟深度链接到底解决了什么问题做App增长的同学应该都遇到过这个场景用户在某渠道点了广告跳转到了落地页甚至已经在应用商店里看到了下载按钮结果划走了。过了一天用户又自己从应用商店搜到这个App装上了打开了。这时候作为开发者你会怎么想第一反应是“反正装上了就行”但做投放的同学已经拍桌子了——这个用户的激活到底算谁的广告渠道说“我带来的”自然流量说“我自己搜的”后台数据吵成一团。延迟深度链接Deferred Deep Link解决的就是这个“时间差”问题。普通Deep Link是“用户已经在App里了通过链接跳转到某个页面”而延迟深度链接是“用户还没装App但点击了带参链接等装好并首次打开时把当初链接里的参数再还给App”。用生活化的比喻普通深链是你已经进了餐厅服务员把你领到预定座位延迟深链是你还没进餐厅门但你已经在大众点评上点了“预定”等你真正进门坐下时后厨已经开始按你预定的菜单备菜了。Appsflyer作为主流的归因平台把这件事做成了标准的SDK接入方案。通过它客户端能拿到“用户是从哪个渠道来的、点击了哪条广告、带有什么自定义参数”这些信息从而决定首屏是弹优惠券、跳活动页还是直接进入某个商品详情。我见过太多项目在接入时只做了基础的激活归因忽略了延迟深度链接的完整链路结果广告投放侧拿到了数据但用户侧的落地体验完全没有联动白白浪费了渠道流量。这篇文章的定位很明确不聊后台报表怎么配只讲客户端怎么接。我会从SDK初始化、延迟回调监听、Android/iOS两侧的代码示例、到联调排坑完整走一遍。适合正在接入AppsFlyer的客户端开发、以及负责App增长但想了解技术实现的产品经理。读完你至少能独立完成一版可测试的接入并且在被测试问“为什么收不到回调”的时候能给出靠谱的排查方向。2. 方案选型为什么用AppsFlyer OneLink而不是自己拼一套2.1 自建延迟深链的“坑”在哪先泼一盆冷水延迟深度链接不是你在客户端写个回调就能搞定的它依赖一整条归因链路。这条链路里最难的不是客户端而是“识别用户是否通过某个链接安装”这一步。如果完全自建你需要解决几个基础问题一是要能拿到设备的唯一标识。Android侧Google Play服务提供的Install Referrer API是相对可靠的但国内厂商商店、尤其是华为的AppGallery对Install Referrer的支持参差不齐你可能需要自己去找厂商适配方案。iOS侧更麻烦没有官方提供类似Install Referrer的机制过去靠的是设备指纹IP、IDFA、UA的交叉匹配自建这套东西的准确率和成本都是大问题。二是你需要有一个自己的短链服务。用户点击广告链接时落地页要能判断设备上是否已经装了App——装了就走Deep Link直接唤起没装就走应用商店下载。这个“判断是否安装”在iOS上目前只能靠Universal Link的timeout策略硬猜在Android上可以通过Scheme的链接尝试一个超短时间内的回调来判断。听起来简单但实际做好至少需要两周以上的客户端服务端工作量而且误差不小。三是信任背书。广告渠道方不会因为你建了个归因系统就认你的数据行业里认的是AppsFlyer这类第三方归因平台。所以自建方案的性价比非常低除非你是体量大到要自己做买量平台的公司否则老老实实接入现成的第三方是更靠谱的选择。2.2 OneLink的工作机制拆解AppsFlyer的延迟深度链接基于OneLink能力实现。你最终得到的是一个短链接类似https://app.onelink.me/xxxx/xxxx用户点击这个链接的过程分两种情况设备已安装AppOneLink短路直接尝试唤起App。Android走Intent SchemeiOS走Universal Link或URL Scheme。设备未安装App链接会先落到AppsFlyer的Web落地页展示App下载引导。用户去应用商店安装后首次打开App时SDK会通过归因数据把短链上携带的所有参数包括自定义参数下发到客户端。这个“首次打开时的归因下发”就是延迟深度链接的核心动作。实际上SDK做的事情是每次App冷启动时都向AppsFlyer服务端请求一次归因数据服务端根据设备ID、点击记录、激活时间等综合判断“这一次激活归因给哪个点击”然后把对应的参数通过回调返回给SDK。有个重要细节必须说清楚延迟深度链接的参数不是“每次打开都能收到”而是从点击到激活的归因窗口内首次打开才可能触发。AppsFlyer的点击归因窗口默认是30天但安装后首次打开的超时窗口是按秒计的具体来说SDK会在App启动后短时间内发起归因请求服务端如果在这个时间点之前收到了匹配的点击记录就会返回带参数的回调。如果没匹配上回调就是不触发的。2.3 接入前必须准备好的账号侧配置很多同学在客户端接入时手忙脚乱其实一半的坑在后台没提前配好。接入前建议先确认下面几件事确认AppsFlyer后台已经创建了应用拿到了devKey开发密钥和appId苹果App IDAndroid可以不填。确认OneLink模板已经创建。在AppsFlyer后台的“OneLink”菜单里先建模板因为我们要在后台生成测试短链并且需要配置OneLink的域名。Android和iOS的包名、Scheme、Universal Link关联的Team ID都在模板的“App设置”里维护。准备好渠道点击链接不一定非要真实广告上线后台可以手动创建一个渠道先生成带参数的测试链接。确认你的App具备接收Deep Link的基础条件Android要至少有一个入口ActivityiOS要配置Universal Link的Associated Domains这个我们后面细说。后台侧的配置一旦错了客户端代码写得再对也收不到归因这是最常见的联调失败原因没有之一。3. Android端实操从依赖引入到延迟回调完整走一遍3.1 环境准备与依赖配置Android这边的接入我以Android Studio为准SDK版本用的是当时最新的6.x系列。先在App模块的build.gradle里加依赖dependencies { implementation com.appsflyer:af-android-sdk:6.12.2 implementation com.android.installreferrer:installreferrer:2.2 }这里我建议把installreferrer依赖一并加上。AppsFlyer本身虽然会主动拉取Install Referrer数据但显式添加这个库可以保证Referrer回调的及时性尤其在Google Play渠道上能显著缩短归因耗时。另外还建议加上Google Play Services的广告标识库用于获取GAIDGoogle Advertising ID否则Android侧的归因会退化为依赖模糊的设备指纹implementation com.google.android.gms:play-services-ads-identifier:18.0.13.2 Manifest配置与SDK初始化在AndroidManifest.xml中需要添加权限和自定义Receiver这个Receiver用于接收安装引荐源广播。Google Play官方推荐使用Install Referrer API替代旧的广播机制但国内一些老渠道仍然会发广播所以保留Receiver能覆盖更全的场景uses-permission android:nameandroid.permission.INTERNET / uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE / application receiver android:namecom.appsflyer.SingleInstallBroadcastReceiver android:exportedtrue intent-filter action android:namecom.android.vending.INSTALL_REFERRER / /intent-filter /receiver /application然后是SDK初始化。这里有一个关键点SDK初始化要在Application类的onCreate中完成而且要在super.onCreate()之后尽快调用。我不建议在某个Activity里初始化因为这样会缩小“启动即上报”的时间窗口可能影响归因准确性。class MyApp : Application() { override fun onCreate() { super.onCreate() AppsFlyerLib.getInstance().apply { initSdk( thisMyApp, YOUR_DEV_KEY, object : AppsFlyerConversionListener { override fun onConversionDataSuccess(conversionData: MapString, Any?) { // 归因数据回调这里能拿到激活归因和深度链接参数 } override fun onConversionDataFail(error: String) { // 归因数据请求失败 } override fun onAppOpenAttribution(attributionData: MapString, String?) { // 非延迟场景下的深链参数回调 } override fun onAttributionFailure(error: String) { // 深链归因失败 } }, this ) start(thisMyApp, YOUR_DEV_KEY) } } }注意initSdk和start两个方法都要调这是官方推荐写法。onConversionDataSuccess是延迟深度链接的核心回调当用户通过OneLink点击后完成安装并首次打开App这个回调能拿到包含af_dp、pid、c等参数的数据。有一点容易踩坑如果你在onCreate里注册了回调但App已经被用户打开过一次非首次安装onConversionDataSuccess也是会回调的只是数据里有is_first_launch标志。所以业务逻辑里一定要判断is_first_launch否则每次打开都会触发弹窗之类的逻辑。3.3 延迟深度链接的自定义参数处理让业务同学去读onConversionDataSuccess返回的整个Map是不现实的我们在客户端要做的是把关键参数解析出来然后分发到对应页面。我一般会把解析逻辑抽成一个独立的工具类避免业务代码里堆一大堆Map取值。object DeepLinkHelper { private const val KEY_IS_FIRST_LAUNCH is_first_launch private const val KEY_AF_DP af_dp private const val KEY_MEDIA_SOURCE media_source private const val KEY_CAMPAIGN campaign fun handleConversionData(context: Context, data: MapString, Any?) { val isFirstLaunch data[KEY_IS_FIRST_LAUNCH] as? Boolean ?: false val deepLinkValue data[KEY_AF_DP] as? String ?: val mediaSource data[KEY_MEDIA_SOURCE] as? String ?: if (!isFirstLaunch) return // 这里可以做页面跳转deepLinkValue通常是 app://promotion/xxx 这类Scheme if (deepLinkValue.isNotEmpty()) { val intent Intent.parseUri(deepLinkValue, Intent.URI_INTENT_SCHEME) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(intent) } } }这段代码里af_dp是OneLink模板里配置的Deep Link值通常是app://product/123这样的自定义Scheme或者Universal Link。实际项目里我建议对af_dp做一层校验防止用户通过伪造链接往App任意页面跳转至少校验一下host是否匹配。另外需要留意onConversionDataSuccess里的参数是归因数据不只是深链参数。af_dp是在用户点击OneLink时由短链携带过来的怎么在后台配置这部分我放到最后讲客户端必须要意识到有一个“参数来源是后台配置”的前提。3.4 Android侧测试方法与注意事项Android模拟器上测试延迟深度链接是有坑的。第一个坑是Google Play Services在模拟器上可能不完整GAID拿不到归因只能靠device fingerprint很可能调试一整天都匹配不上。第二个坑是模拟器上安装APK的方式通常是用adb install这种安装方式没有Google Play Install Referrer广播所以Referrer数据为空。我的建议是坚决用真机测试。测试流程上可以这样操作卸载App。在AppsFlyer后台生成一条OneLink短链带上自定义参数比如把af_dp设为app://pro/888pid设为test_channel。在手机上用浏览器打开这条短链看到落地页后不要点“打开”直接去应用商店搜索App安装或者用adb安装APK。首次打开App观察Logcat里AppsFlyer的日志。有个调试利器可以在开发阶段打开SDK支持显示调试日志。只需一行AppsFlyerLib.getInstance().isDebug true开启后Logcat里会打印完整的归因请求和响应信息可以看到dev_key是否生效、设备ID是否正常上报服务端回来的JSON数据也会直接显示。联调时第一件事就是看能不能打出这个日志连日志都没有的基本是SDK没初始化成功。4. iOS端实操Universal Link与延迟归因回调的实现细节4.1 用CocoaPods集成SDKiOS端我用CocoaPods来做集成这个没什么好纠结的官方SDK的pod名是AppsFlyerLibpod AppsFlyerLib然后在AppDelegate里初始化。需要说明的是iOS的SDK初始化比Android多了几个苹果生态特有的配置appleAppID和appleAdvertisingIdentifierIDFA。IDFA在iOS 14之后需要用户授权如果拿不到SDK会退化为用设备的其他信号做归因影响不是致命的但测试时要意识到这一点。import AppsFlyerLib UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) - Bool { AppsFlyerLib.shared().appsFlyerDevKey YOUR_DEV_KEY AppsFlyerLib.shared().appleAppID 123456789 AppsFlyerLib.shared().deepLinkDelegate self AppsFlyerLib.shared().isDebug true NotificationCenter.default.addObserver( self, selector: #selector(didBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil ) return true } objc func didBecomeActive() { AppsFlyerLib.shared().start() } }iOS侧有个习惯性坑start()方法需要放在applicationDidBecomeActive里调用而不是只放在didFinishLaunchingWithOptions里。因为iOS的App从后台回到前台时SDK也需要重新上报一次会话这样才能把“已安装用户回访”的激活数据算准。只写启动一次的话后台上长驻回访的用户全部归不了因。4.2 Universal Link配置三步走iOS的Deep Link在iPhone上必须通过Universal Link才能实现“未安装先点击短链安装后直接带回参数”的体验。这一步很多新手做不对因为配置面比较广我分成三步讲。第一步在Apple Developer后台注册Associated Domains。选中你的App ID打开Associated Domains能力添加一条domain格式是applinks:你的onelink子域名。注意这里的域名是your-subdomain.onelink.me具体子域名在AppsFlyer后台的OneLink模板页面可以看到。第二步在Xcode工程里打开Signing Capabilities添加Associated Domains capability把同样的applinks:前缀域名加进去。第三步确认apple-app-site-association文件可访问。Universal Link的验证机制是系统会去https://你的域名/apple-app-site-association拉取一个JSON文件AppsFlyer托管了这个文件。你可以在浏览器里访问验证一下如果打开后能看到包含appID和paths的JSON说明域名侧没问题。对于OneLinkAppsFlyer已经帮你托管好了这个文件所以第三步通常不用自己处理。真正需要自己处理的是当App收到Universal Link时要调用SDK的continue方法func application( _ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: escaping ([UIUserActivityRestoring]?) - Void ) - Bool { AppsFlyerLib.shared().continue(userActivity, restorationHandler: restorationHandler) return true }如果不实现这个方法即使用户从短链唤起AppSDK也拿不到这个点击的来源延迟归因自然就断了。4.3 实现DeepLinkDelegate回调iOS SDK处理延迟深度链接的方式和Android不同后面的版本统一通过DeepLinkDelegate来处理。你注册的delegate会收到didResolve deepLinkResult回调里面封装了解析结果。extension AppDelegate: DeepLinkDelegate { func didResolve deepLinkResult: DeepLinkResult { guard let deepLink deepLinkResult.deepLink else { print(Deep link resolution failed: \(deepLinkResult.status.rawValue)) return } // 取出归因和深链参数 let clickID deepLink.clickID let afDP deepLink.clickEvent[af_dp] as? String let mediaSource deepLink.clickEvent[media_source] as? String if let afDP afDP, let url URL(string: afDP) { // 这里根据业务scheme跳转页面 handleDeepLink(url: url) } } }注意DeepLinkResult里有一个status枚举优秀的分发逻辑要先判断status.notFound算正常情况表示这次启动没有深链数据。.found拿到了深链数据。.failure解析失败可能是链路中间有错误。.performanceError超时通常是因为网络环境不良导致SDK没能在超时时间内完成归因请求。这个地方也是很多人踩坑的重灾区他们只在found状态里写业务逻辑忽略了其他三种状态的处理。实际上notFound才是日常打开App的常态反复判断found之外的流程至少要有日志输出否则线上出了问题根本不知道是深链没发、还是归因超时。4.4 iOS侧的真机测试与ATS注意点iOS模拟器测试Universal Link是可以的但有一个前提模拟器需要登录iCloud账号才能让系统拉取Associated Domains的验证文件。实际项目里我更推荐用真机省去模拟器相关的幺蛾子。ATSApp Transport Security这里要特别提醒如果你在调试阶段使用HTTP协议的落地页默认会被ATS拦截。虽然AppsFlyer的短链本身走的是HTTPS但你自己的跳转目标如果是一个HTTP的内网测试环境一定要在Info.plist里配置例外否则跳转白屏你还会以为是SDK的问题keyNSAppTransportSecurity/key dict keyNSAllowsArbitraryLoads/key true/ /dict发布版本不建议放开NSAllowsArbitraryLoads这个属于一把梭审核会问。面向调试可以临时用记得上线前删掉。还有一点iOS 14之后的ATT授权弹窗会直接影响IDFA的获取但不会阻止归因。如果你的App没有请求IDFA权限SDK会继续工作只是归因准确率会下降。对于延迟深链来说由于OneLink点击本身有自己独立的归因idIDFA缺失的负面影响比普通广告归因要小一些不用特别焦虑。5. 联调关卡常见问题排查与经验技巧5.1 典型问题速查表接入过程中我整理过一份高频率的问题清单基本覆盖了80%的联调卡壳场景问题现象可能原因解决方案Android收不到onConversionDataSuccessdevKey配置错误或未在Application里初始化检查初始化位置开启isDebug看日志确认devKeyAndroid回调里没有af_dpOneLink模板未配置Deep Link值点击链接时未带af_dp参数在模板的“Deep Linking”配置里填写af_dpiOS的didResolve一直notFoundAssociated Domains未配置完整未实现continue方法检查App ID和Xcode的Associated Domains确认continue调用iOS首次启动收不到归因网络请求超时尤其在国内网络访问AppsFlyer服务端不稳定排查网络连通性考虑在网络稳定的专线环境测试模拟器测试一直不归因模拟器没有GAID/IDFA归因信号缺失换成真机测试第二次打开App还触发激活弹窗业务代码没判断is_first_launch增加is_first_launch判断5.2 排查链路如何一步步定位我自己的排查习惯是“由简到繁、两端确认”。首先确认SDK上报侧。Android看Logcat、iOS看Xcode控制台核心看两点一是SDK有没有打印出包含dev_key的启动日志二是有没有打印出getConversionData相关的网络请求日志。如果请求都没发出那不用看后台先解决客户端初始化问题。然后确认后台侧。AppsFlyer后台的“原始数据报表”里能查到设备维度的激活记录如果客户端上报正常这里会有一条包含设备ID和归因渠道的记录。如果原始数据里没有这条记录说明数据根本没到后台那是SDK初始化或网络问题。如果记录有但渠道是错误的说明点击匹配出了问题要回到OneLink短链本身的参数配置去查。最后确认点击侧。用点击链接的同一台设备测试点完链接后不要清理浏览器缓存。浏览器缓存是归因点击id本地存储的关键如果你点击一次后清掉了WebView缓存然后重新去点一次新链接老链接对应的点击记录可能就会失效。这里分享一个我常用的技巧在OneLink短链后面直接拼一段测试参数比如?af_dpapp%3A%2F%2Fproduct%2F999piddebug_channel。因为OneLink的主域名是固定的后面加query参数可以在测试时灵活改变参数值不需要每次都在后台重新生成短链。这样调试归因时真的省非常多时间强烈推荐。5.3 几个值得写进团队规范的实操经验第一个经验延迟深链的测试用例必须写成文档作为每次版本发布前的回归项。我在团队里做过一次“罪案复盘”——某个版本发布后市场部反馈某渠道的新用户首日活跃率跌了一半最后排查发现是新版本SDK升级后iOS的deepLinkDelegate没有被重新赋值回调直接不触发了导致所有通过短链进来的新用户全部看不到活动页。这种问题如果不在发布前用真机回归一遍线上根本发现不了。第二个经验代码里的Deep Link处理逻辑要做到“幂等”。用户从点击短链到安装打开App中间可能存在多个进程或多次回调触发。比如Android上onConversionDataSuccess和在Activity中再次通过Intent解析Deep Link可能同时发生处理逻辑要加防重标记避免用户被跳转了两次。用字段保存本次启动是否已经处理过深链即可。第三个经验延迟深度链接接入时要考虑“降级方案”。如果你的深链携带的活动ID在客户端解析出了问题或者对应的活动已经下线用户看到的可能是空白页。网上很多方案是“能跳就跳跳错就闪退”这个是不能接受的。稳妥的兜底是解析出参数后先检查是否合法不合法的统一跳到首页并上报一个自定义事件方便后续分析。第四个经验使用短链参数时做好参数白名单。不要直接把af_dp作为唯一跳转依据因为af_dp是可以被伪造或篡改的。正规做法是在后台OneLink模板里定义好Deep Link的格式客户端只接受特定scheme和host其他一律按非法处理。这不是过度设计市面上确实有通过伪造深链进行恶意拉起的攻击手法。6. 最后的落地建议从接入到上线你需要走完的流程没有收尾式的总结就聊一个我实际落地时的经验顺序。如果你是一个新项目要接入延迟深度链接我建议不要一上来就埋头写代码先把下面这个流程跑通第一在AppsFlyer后台把App建好、OneLink模板建好、测试短链生成好这一步控制在半天内。第二先跑一个“最小闭环”Android和iOS各用真机点击短链、安装、打开、看日志确认能拿到media_source和af_dp这一步顺利的话半天能完成。第三再做完整的业务分发逻辑包括is_first_launch判断、Deep Link解析、页面跳转和防重逻辑这一步一天到一天半。第四把后台的渠道配置、自定义参数的规范和使用文档整理出来同步给市场和投放同学让他们知道哪些参数是客户端能消费的哪些只是用来后台报表统计的。这种顺序的好处是你在写复杂业务逻辑之前已经验证了“链路是通的”后面的工作都是在给这条通了的链路做“内容包装”。反过来如果你先写业务跳转、再回头测归因遇到收不到回调的情况你根本无法分辨是SDK链路问题还是业务代码问题排查难度会大得多。关于延迟深度链接最后再分享一个我自己的判断随着各家归因平台把OneLink这类技术方案做得越来越成熟客户端接入的复杂度已经比三年前降低了很多但越是成熟的SDK越容易让人忽略对链路的理解。我始终建议客户端同学把“点击短链→归因上报→回调分发”这条路自己组一遍数据流不要停留在“照着文档抄一份代码”的程度。只有理解了这条链路碰到线上疑难问题时你才有一种“我大概知道问题出在哪个环节”的方向感。这种方向感往往比任何一份排查文档都值钱。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从零手搓AI工程栈:分层架构、多Provider适配与缓存降级实战 2026/10/2 18:34:44

从零手搓AI工程栈:分层架构、多Provider适配与缓存降级实战

1. 为什么我要从零手搓一套AI工程栈第一次看到ai-engineering-from-scratch这个标题,我脑子里蹦出来的不是“又一个教程仓库”,而是过去两年带团队踩过的那些坑。市面上讲AI的课程和文章多如牛毛,但绝大多数要么停留在调包层面——import ope…

阅读更多 →
农产品销售平台|基于java+ vue农产品销售平台(源码+数据库+文档) 2026/10/2 18:34:38

农产品销售平台|基于java+ vue农产品销售平台(源码+数据库+文档)

农产品销售平台 目录 基于springboot vue农产品销售平台 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue农产品销售平台 一、前言 博主介绍&#x…

阅读更多 →
OpenCV+YOLOv5实时车位识别系统(CPU可跑) 2026/10/2 18:34:32

OpenCV+YOLOv5实时车位识别系统(CPU可跑)

简介:本资源是一个基于Python开发的智能停车场管理系统完整项目,面向计算机专业本科生、人工智能方向课程设计与毕业设计学习者,聚焦车牌识别、车位检测、智能计费与数据管理等典型AI落地场景。项目采用深度学习与计算机视觉技术,…

阅读更多 →
数据预处理全链路实战:从数据清洗到特征工程的关键技巧 2026/10/2 18:34:32

数据预处理全链路实战:从数据清洗到特征工程的关键技巧

数据预处理这件事,我在数据科学项目里翻来覆去折腾了很多年。刚入行时总觉得建模才是核心,后来被现实教育过几次才发现,真正决定项目成败的往往不是模型,而是你在建模之前那十几个小时面对脏数据所下的功夫。数据预处理听着基础&a…

阅读更多 →
AGV仓储调度核心:A*算法路径规划与多车避障实战解析 2026/10/2 18:34:32

AGV仓储调度核心:A*算法路径规划与多车避障实战解析

我接手过的AGV仓储项目不算特别多,但每一次都让我对"调度系统才是仓库自动化灵魂"这句话体会更深。早先做第一个AGV仓储项目的时候,我也曾天真地以为:买几台AGV小车,铺好二维码,系统就能自动搬货&#xff0c…

阅读更多 →
危化品运输车目标检测数据集:3059张图跑通YOLOv8训练实战 2026/10/2 18:34:32

危化品运输车目标检测数据集:3059张图跑通YOLOv8训练实战

简介:面向危化品运输车识别检测任务,数据集整合油罐车、天然气运输车、化学品运输车等常见危化品车型实拍样本,共3059张JPG图像,适用于YOLO系列模型训练、验证与算法对比。压缩包整体约437.68MB,除原始图片外&#xff…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉