跳到主要内容

安装

装齐 @unif/react-native-umeng 的同伴包,完成 iOS 编译,再做一步原生回调配置。分享面板的 UI 依赖 @unif/react-native-design,peerDeps 缺一即崩 —— 本页以 package.jsonpeerDependencies 为准逐项列出。

环境要求

要求版本
React Native0.85+(仅新架构 Fabric + TurboModules)
React19+
iOS由友盟 U-Share / U-App SDK 决定
Android由友盟 U-Share / U-App SDK 决定
仅支持新架构

本库是 TurboModule 桥,仅支持 React Native 0.85+ 新架构。旧架构(Bridge)不在目标范围。


1. 安装依赖

以下同伴包全部必装(以 package.jsonpeerDependencies 为准):

yarn add @unif/react-native-umeng \
@unif/react-native-design \
react-native-gesture-handler \
react-native-svg

各包的作用与版本约束:

版本约束作用
@unif/react-native-design>=0.1.2分享面板 UI(Cell / Button / useThemedStyles),必装(见下)
react-native-gesture-handler>=2.21.0design 组件的手势底层(design 的 peer,连带必装)
react-native-svg>=15面板平台图标

react / react-native 也声明为 peer(*),任何 RN 工程都已自带,无需为本库单独安装。

@unif/react-native-design 是分享面板的 UI 壳,不能省

<ShareSheetHost /> 面板本体是 RN Modal 底部弹层,内部用 design 的 Cell / Button / useThemedStyles 渲染,并且必须在 design 的 ThemeProviderGestureHandlerRootView才能工作(design 组件的触摸经 gesture-handler)。这套挂载约定见快速上手。缺 design 或缺 ThemeProvider,分享面板无法渲染。

只用统计、不用分享?

即使如此,@unif/react-native-design 等仍是 peerDependencies(非可选),包管理器会要求安装齐全。统计(Analytics.*)本身不依赖 design,但建议按上表装齐以避免 peer 告警。


2. iOS:pod install

安装或升级依赖后,必须重新执行 pod install:

cd ios && bundle exec pod install

完成后用 Xcode 或 npx react-native run-ios 重新编译运行。

模拟器跑不起分享

友盟 U-Share 在 Apple Silicon Mac 模拟器上有 EXCLUDED_ARCHS=arm64 限制,且模拟器没有真微信 / 钉钉。分享一律真机验证,详见常见问题


3. Android

Android 端依赖随 Gradle 自动同步,无需手动 link。直接 npx react-native run-android 即可编译。

微信 / 钉钉的分享回调 Activity 需要落在宿主包名下,见下一步原生配置。


4. 原生回调配置(必做)

分享后能否跳回 App,完全取决于原生侧的 URL Scheme / 回调 Activity 注册。模板不要凭记忆编,按对应平台文档逐项配置:

  • iOS 原生配置 —— Info.plistLSApplicationQueriesSchemes / CFBundleURLTypes,AppDelegate 转发 handleOpen(_:options:),微信 Universal Link。
  • Android 原生配置 —— WXEntryActivity / DDShareActivity 必须在宿主包名下,钉钉 appId 与 JS 侧 preInit({ dingtalkAppId }) 一致。

友盟 appkey / appsecret / Universal Link 等都通过 JS Common.preInit(config) 传,不写在 Info.plist / Gradle


下一步