点击菜单中的File->New->Target,然后选择Widget Extension,创建一个新的Target,填写Widget 名字为QGWidget
登录开发者账号和keystore分别申请开发环境和发布环境的APP ID和描述文件,这里注意在申请APP ID时勾选APP Groups能力。
因为历史原因,工程中的编译环境较多,而且没有采用自动管理,所以需要配置的地方比较多
Bundle Indentifier
和Provisioning Profile
,这里是在Build Settings
里修改的,如果环境不多,可以直接在Signing & Capabilities
里进行修改。Signing & Capabilities
->+ Capability
,并填写相同的Group ID,这里如果没有登陆对应的开发者账号则Group ID为红色,但证书和描述文件正确即可正常使用。注意这里不登陆开发者账号是没办法直接在
Signing & Capabilities
里进行修改的,这时候需要手动指定entitlements文件并在文件中添加环境对应的group ID。
目前构建读取描述文件时使用的是工程中新建的plist文件,因此新增target后需要在plist中添加描述文件,至此工程配置已全部修改完毕。
)
在主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 删除。