Flutter 实现 iOS 小组件与主 App 的通信

前言

在 Flutter 项目中实现 iOS 小组件与主 App 的通信,主要依赖于 App Groups 技术,以下是具体实现步骤和注意事项。

配置 App Groups

在 Xcode中为 Flutter 主应用(Runner)和 Widget Extension 配置相同的App Group 标识符(如 group.com .company.myApp)。

  1. 操作路径:项目的 Signing & Capabilities→ 添加App Groups → 输入唯一标识符
  2. 需确保主应用和小组件扩展的 Bundle Identifier 均属于同一开发者账号,否则无法启用 App Groups

UserDefaults 数据共享

Flutter 端

通过 home_widget 插件设置 App Group ID 并保存数据:

  1. 安装 home_widget 插件

    flutter pub add home_widget

  2. 使用
    home_widget插件官方使用文档

    HomeWidget.setAppGroupId('group.com.company.myApp'); // 初始化
    HomeWidget.saveWidgetData<String>('key', 'value'); // 保存数据

iOS 原生端 (小组件)

通过 UserDefaults(suiteName:) 读取数据:

复制代码
 let sharedDefaults = UserDefaults(suiteName: "group.com.company.myApp")
 let value = sharedDefaults?.string(forKey: "key") ?? ""

主动刷新小组件

主动刷新 iOS 小组件

复制代码
  HomeWidget.updateWidget(
      iOSName: 'TikuWidget',
    );

结语

通过 App Group 和 home_widget 插件 我们就轻松实现了 Flutter 项目中的 iOS 小组件与主 App 的通信。


感谢您的阅读和参与,HH思无邪愿与您一起在技术的道路上不断探索。如果您喜欢这篇文章,不妨留下您宝贵的赞!如果您对文章有任何疑问或建议,欢迎在评论区留言,我会第一时间处理,您的支持是我前行的动力,愿我们都能成为更好的自己!

相关推荐
遝靑25 分钟前
深入 Flutter 底层:自定义 RenderObject 实现高性能异形列表项
flutter
@大迁世界34 分钟前
iOS 26.2 引入三种全新 iPhone 自定义方式
ios·iphone
爱吃大芒果1 小时前
Flutter 网络请求完全指南:Dio 封装与拦截器实战
开发语言·javascript·flutter·华为·harmonyos
Sheffi661 小时前
iOS 触摸事件完整传递链路:Hit-Test 全流程深度解析
macos·ios·cocoa
kirk_wang2 小时前
Flutter 三方库 `flutter_phone_direct_caller` 在 OpenHarmony 平台的适配实战
flutter·移动开发·跨平台·arkts·鸿蒙
爱吃大芒果2 小时前
Flutter 自定义 Widget 开发:从基础绘制到复杂交互
开发语言·javascript·flutter·华为·ecmascript·交互
Swift社区2 小时前
用 Task Local Values 构建 Swift 里的依赖容器:一种更轻量的依赖注入思路
开发语言·ios·swift
2501_915909062 小时前
苹果应用加密方案的一种方法,在没有源码的前提下,如何处理 IPA 的安全问题
android·安全·ios·小程序·uni-app·iphone·webview
孤鸿玉2 小时前
Flutter官方正在搞热更新(动态化)?硬核,干货,有证据,有代码
flutter·开源