iOS区分不同版本URL schema

本文介绍iOS项目开发中如何通过不同版本的证书和bundleID来区分mobile、inhouse与AppStore版本,并利用URLschema解决第三方登录时可能产生的混乱问题。

        iOS项目开发中,同一个APP,在打包时,通常有三种版本:mobile版本,inhouse版本,App Store版本。前者用于程序员debug,inhouse用于测试同学、产品同学和公司其他同学的安装,最后的App Store则是发布版本。三个APP只是bundleID不同,证书不同。功能是完全一致。同一个设备上可安装三个APP,有些情况会给开发调试造成困扰,比如:APP带有第三方登录功能,用mobile版本APP登录,调起微信,授权后返回。由于mobile,inhouse,App Store三个APP都可相应URL schema。调起那个就要看系统的心情了。很可能不是你想要的mobile版。
        为了解决上述问题。可以针对不同的版本响应不同的URL schema(微信可以申请多个APPkey,正好一种版本,分配一个
        在APP的info.plist中可以设置URL schema(在工程文件可视化配置中,同样可以设置)。URL schema不再写死,而是写成变量(XCCONFIG_URL_SCHEMA)如下图。


(注意看Item1的值,是个变量,不再写死)

        在xcconfig中修改这个变量,如下代码:

// MOBILE || INHOUSE || APPSTORE 
//在配置好自动打包脚本,该处会自动修改。
XCCONFIG_ACCOUNT = MOBILE
//防止安装多个app,url schema乱跳问题。仅仅对微信方式有效。微信可申请多个APP key
XCCONFIG_URL_SCHEMA_MOBILE = wxaaaf9a3
XCCONFIG_URL_SCHEMA_INHOUSE = wxe922e194
XCCONFIG_URL_SCHEMA_APPSTORE = wx3f994a5
//拼接起来
XCCONFIG_URL_SCHEMA =$(XCCONFIG_URL_SCHEMA_$(XCCONFIG_ACCOUNT))
        随着XCCONFIG_ACCOUNT的改变,URL schema也会变。最终就是


<think> 我们正在讨论美团URL Schema(即深度链接技术),特别是参考了之前提到的“系统交互Schema”部分(增强版Universal Link)。用户明确要求查找美团URL Schema的介绍和使用方法,因此我们需要聚焦于: 1. 美团URL Schema的定义和核心作用 2. 具体使用方式(包括格式示例) 3. 与传统Schema及Universal Link的对比优势 4. 实际应用场景和注意事项 根据之前的回答,美团采用了增强版Universal Link方案(引用[1]),因此需要突出其技术实现特点。同时注意用户可能需要的实操细节。 以下是结构化回答: </think> ### 美团URL Schema详解及使用指南 基于美团技术实践(核心引用[1][2]),其URL Schema体系采用**增强版Universal Link方案**,解决跨平台跳转的兼容性问题。以下是关键信息: --- #### 一、**核心设计原理** 1. **与传统Schema对比** | 能力 | 传统URL Schema | 美团增强方案 | |---------------------|---------------------|--------------------------| | 未安装App时的跳转 | 显示错误弹窗⚠️ | **无感跳转应用商店**✅ | | 微信/手百内打开限制 | 完全阻断🚫 | **通用跳转能力**✅ | | 路由统一性 | WAP页与App路径独立 | **同一URL跨端兼容**✅ | 2. **技术本质** 将URL Schema重构为**无侵入的跳转中间层**: ```mermaid graph LR A[外部链接] --> B(Universal Link路由层) B --> C{美团App已安装?} C -->|是| D[直接打开App内页] C -->|否| E[无弹窗跳转应用商店] ``` --- #### 二、**标准URL格式与参数** 美团URL Schema遵循分层结构,以业务线为基准: ```bash # 通用格式 meituan://{业务线}/{页面类型}?{参数键值对} # 示例:打开外卖订单详情页 meituan://waimai/order_detail?order_id=123456&source=wechat ``` **关键参数说明**: | 参数 | 作用 | 是否必填 | |---------------|------------------------------|----------| | `order_id` | 订单ID(长度限制12位) | ✅ | | `source` | 来源渠道(如wechat, alipay) | ✅ | | `ref` | 跳转来源页签名 | ️防篡改 | > 注:所有参数需进行**URL Encode**处理[^1] --- #### 三、**开发者接入流程** 1. **Android端配置** ```xml <!-- AndroidManifest.xml --> <intent-filter> <data android:scheme="meituan" android:host="waimai" android:pathPrefix="/order_detail"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> ``` 2. **iOS端配置** ```json // apple-app-site-association 文件 { "applinks": { "apps": [], "details": [{ "appID": "8H9XZPABCD.com.meituan.iphone", "paths": ["/waimai/order_detail*"] }] } } ``` 3. **跳转兼容处理** ```javascript // 前端跳转逻辑(伪代码) function openMeituan(orderId) { const url = `meituan://waimai/order_detail?order_id=${orderId}`; if (isWechatBrowser()) { window.location.href = 'https://meituan.com/app_download'; // 微信内降级引导 } else { window.location.href = url; setTimeout(() => { window.location.href = 'https://appstore.meituan'; // 未安装兜底 }, 500); } } ``` --- #### 四、**典型场景与最佳实践** 1. **场景1:订单分享跳转** ```bash # 用户收到短信链接: https://m.meituan.com/waimai/order_detail/123456 → 自动转换为 → meituan://waimai/order_detail?order_id=123456 ``` 2. **场景2:跨平台营销活动** ```bash # 支付宝活动页跳转美团优惠券 meituan://coupon/claim?coupon_id=888&min_amount=30 ``` **限制**:需提前在美团开放平台报备域名白名单[^2] 3. **避坑指南**: - ⚠️ iOS 14+ 需验证`Associated Domains`证书 - ️ 微信内需申请`URIScheme`白名单(仅限合作商户) - ✅ 优先使用`https`域名跳转替代原生Scheme(提升通过率) --- ### 五、 **调试工具推荐** | 工具 | 用途 | 支持平台 | |--------------------|-------------------------|----------| | **Android ADB** | 测试Intent跳转逻辑 | Android | | `xcrun simctl openurl` | iOS模拟器深度链接调试 | iOS | | **Charles Proxy** | 抓包分析跳转链路 | 全平台 | > 完整文档见:[美团开放平台 - 深度链接接入指南](https://open.meituan.com/docs/deeplink)[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值