我为Notification Content Extension
写了一个自定义Push Notifications
,如下所示:
问题是,每当用户访问旋转木马中的某个项目时,我都希望GO TO APP
按钮在应用程序打开时向其发送String
,并从那里开始,处理该字符串以将用户移动到正确的ViewController
。
我已经在应用程序内部有处理部分,我只需要知道如何将该字符串从Notification Content Extension
传递到容器应用程序。
谢谢! :)
答案 0 :(得分:2)
在功能中启用应用程序组,并使用套件userDefaults编写密钥并在应用程序中读取
NSUserDefaults*defaults= [[NSUserDefaults alloc] initWithSuiteName:@"group.com.company.appName"];
// Write in extension
[defaults setObject:@"anyThing" forKey:@"sharedContent"];
// Read in app
[defaults objectForKey:@"sharedContent"];
答案 1 :(得分:0)
iOS 13,Swift 5。
根据Sh_Khan的回答,以下是一些Swift语法。显然,我已将App Group作为功能添加到主应用程序的目标+扩展的目标中,在此示例中将该组命名为“ group.ch.Blah”。
设置应用程序组(在我们的案例中保存一个字符串)时,需要将类型设置为“任何导致字符串不是组中可用的类型”。
let localK = getPrivateKey64() as Any
let defaults = UserDefaults.init(suiteName: "group.ch.Blah")
defaults?.set(localK, forKey: "privateK")
设置应用组并读回字符串,需要将其重铸回字符串。
let defaults = UserDefaults.init(suiteName: "group.ch.Blah")
let localK = defaults?.object(forKey: "privateK") as? String
与通知服务扩展程序完美配合。
答案 2 :(得分:0)
如果您的应用配置了通用链接,或者您已经为应用定义了自定义网址方案,您还可以通过调用来打开应用的网址(例如查询参数中的数据)
extensionContext?.open(url)
在您的 NotificationViewController
中。