iOS通知内容扩展 - 如何将数据传递到应用程序?

时间:2017-12-28 08:43:57

标签: ios objective-c

我为Notification Content Extension写了一个自定义Push Notifications,如下所示:

enter image description here

问题是,每当用户访问旋转木马中的某个项目时,我都希望GO TO APP按钮在应用程序打开时向其发送String,并从那里开始,处理该字符串以将用户移动到正确的ViewController

我已经在应用程序内部有处理部分,我只需要知道如何将该字符串从Notification Content Extension传递到容器应用程序。

谢谢! :)

3 个答案:

答案 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"];

enter image description here

答案 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 中。