我正在开发ShareExtension应用程序。
我想将Container App中的数据共享到ShareExtension应用程序。
以下是我在Container App View Controller中使用的代码:
let userDefaultx = NSUserDefaults(suiteName: "group.myapps.userConnect")
userDefaultx!.setObject("new user", forKey:"user")
userDefaultx!.synchronize()
现在我正在尝试捕获ShareExtension View Controller中的数据:
let userDefaults = NSUserDefaults(suiteName: "group.myapps.userConnect")
let user = userDefaults?.valueForKey("user")
print(" user \(user) ") // returns nil
我正在使用模拟器而我没有使用默认的 SLComposeServiceViewController 。
相反,我使用了常规的UIViewController。
我错过了什么问题?
答案 0 :(得分:2)
按照以下步骤成功将共享扩展程序与您的应用程序集成,
- 在您的应用中添加新目标
醇>
- 选择分享扩展程序 - >点击下一步
醇>
- 您会收到一个弹出式提醒 - >点击激活按钮
醇>
- 检查您应用的捆绑包标识符
醇>
- 检查您的扩展程序包标识符
醇>
- 登录Apple Developer Portal - >点击证书,标识符&个人资料部分 - >选择应用组下的 标识符部分 - >单击“添加新应用程序组”
醇>
- 输入您的应用程序组名称 - >输入标识符,该标识符应以组一词开头。
醇>
- 为您的应用创建新的应用ID
醇>
- 输入应用程序ID名称和应用程序的软件包标识符。
醇>
- 启用应用程序组 - >单击完成
醇>
- 现在选择您刚刚创建的应用ID - >点击修改
醇>
- 单击“应用程序组”旁边的“编辑”
醇>
选择您在步骤7中创建的应用组 - >单击完成
使用您创建的应用ID生成配置文件并在项目中使用
- 醇>
为您的应用扩展程序创建新应用ID
- 输入应用程序ID名称和应用程序的扩展程序包标识符。
醇>
再次执行步骤10到步骤14
您必须为您的应用和扩展程序生成两个(开发/分发)配置文件
- 醇>
这里我展示了为您的应用程序生成开发配置文件的一个示例 - >在Provisioning Profiles下选择Development - >单击添加
- 选择iOS App Development - >点击继续
醇>
- 在步骤10 - >中选择您为应用创建的应用ID。点击继续 - >将其命名为>下载 - >安装它
醇>
- 在项目目标中设置该个人资料
醇>
按照步骤19到22生成扩展程序的开发配置文件。在这里选择您创建的App ID 为您的扩展。你需要按照这些相同的步骤进行生成 当您需要生活时,您的分发配置文件 在App Store上的应用程序。
在项目中设置所有开发/分发配置文件
- 醇>
打开您的项目 - >选择应用目标 - >能力 - >启用应用组 - >选择您在步骤7中创建的应用程序组
- 选择扩展程序 - >能力 - >启用应用组 - >选择您在步骤7中创建的应用程序组
醇>
现在,如果您想在应用和扩展程序之间共享数据,请使用以下代码,
在您的应用中,
let defaults = UserDefaults(suiteName: "group.com.myapp") // Your App Group name
defaults?.set(str_user_token, forKey:"user_token")
defaults?.synchronize()
在您的共享扩展程序文件中,使用以下代码
访问它let defaults = UserDefaults(suiteName: "group.com.myapp") // Your App Group name
let restoredValue = defaults!.string(forKey: "user_token")
您已全部为Share Extension设置!快乐的编码。 干杯!