首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS Widget Extension开发拾遗

iOS Widget Extension开发拾遗

原创
作者头像
晨之阴影
修改2022-12-01 11:10:02
1.1K0
修改2022-12-01 11:10:02
举报
文章被收录于专栏:晨光的Code晨光的Code

1. 新建Extension

点击菜单中的File->New->Target,然后选择Widget Extension,创建一个新的Target,填写Widget 名字为QGWidget

新建Extension
新建Extension

2. 申请APP ID和描述文件

登录开发者账号和keystore分别申请开发环境和发布环境的APP ID和描述文件,这里注意在申请APP ID时勾选APP Groups能力。

勾选APP Groups
勾选APP Groups
申请APP ID
申请APP ID

3. 在工程中配置APP ID和描述文件

因为历史原因,工程中的编译环境较多,而且没有采用自动管理,所以需要配置的地方比较多

  • 分别配置Debug和Release的Bundle IndentifierProvisioning Profile,这里是在Build Settings里修改的,如果环境不多,可以直接在Signing & Capabilities里进行修改。
修改签名配置
修改签名配置
  • 在主Target和Widget Target中添加App Groups能力,路径为Signing & Capabilities->+ Capability,并填写相同的Group ID,这里如果没有登陆对应的开发者账号则Group ID为红色,但证书和描述文件正确即可正常使用。
添加App Groups能力
添加App Groups能力
  • 添加.entitlements能力描述文件,并指定环境对应的entitlemens文件

注意这里不登陆开发者账号是没办法直接在Signing & Capabilities里进行修改的,这时候需要手动指定entitlements文件并在文件中添加环境对应的group ID。

添加.entitlements能力描述文件
添加.entitlements能力描述文件
  • 修改构建脚本读取的plist

目前构建读取描述文件时使用的是工程中新建的plist文件,因此新增target后需要在plist中添加描述文件,至此工程配置已全部修改完毕。

)

修改构建脚本
修改构建脚本

5. 数据传递

在主App里写入数据到UserDefaults中,在widget中读取数据

/// 在主App中写入数据到UserDefaults中          
NSString *suiteName = [NSString stringWithFormat:@"group.%@", [[NSBundle mainBundle] bundleIdentifier]];
NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:suiteName];
[userDefaults setObject:data forKey:dataKey];
[userDefaults synchronize];

/// 通知Widget刷新数据
@available(iOS 14, *)
@objc func receiveNotice(_ notification: NSNotification) {
    #if arch(arm64) || arch(i386) || arch(x86_64)
    WidgetCenter.shared.reloadTimelines(ofKind: "QGFocusWidget")
    #endif
}
       
/// widget中读取数据
self.userDefaults = [[NSUserDefaults alloc] initWithSuiteName:[[NSString stringWithFormat:@"group.%@", [[NSBundle mainBundle] bundleIdentifier]] stringByReplacingOccurrencesOfString:@".anchorrec" withString:@""]];
self.defaultPacketData = [self.userDefaults objectForKey:dataKey];;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 新建Extension
  • 2. 申请APP ID和描述文件
  • 3. 在工程中配置APP ID和描述文件
  • 5. 数据传递
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档