无法通过共享扩展代码访问iOS中的离子插件钥匙串键值对。

时间:2018-08-23 05:46:35

标签: ios ionic-framework nsuserdefaults keychain ios8-share-extension

我创建了一个混合应用程序,我们在其中使用ionic上载文件。

对于iOS,我们创建了共享扩展名以上传文件,现在尝试将凭据从ionic应用程序传递到iOS中的共享扩展名。

我使用了iOS钥匙串机制,因为离子本机和iOS都支持它。

我在快速和密钥链实现中编写的共享扩展是在ionic应用程序中使用诸如ionic插件的包装。

我能够在ionic插件中保存信息并可以在ionic本身中获取。 共享扩展名也是如此。

尽管我无法从ionic获取与共享扩展共享的信息。

这是我在共享扩展的视图控制器中使用的东西。

let keychainWrapper = KeychainWrapper.init(serviceName: "xxxx.xxx.xxx" )
let str = keychainWrapper.accessGroup
        let keyBool = keychainWrapper.accessibilityOfKey("key")
        let value = keychainWrapper.string(forKey: "key", withAccessibility:KeychainItemAccessibility.whenPasscodeSetThisDeviceOnly)
        let serviceName = keychainWrapper.serviceName

在离子中:

 this.keychain.set(key, value,false).then(() => {
      this.keychain.get(key)
        .then(value => console.log('Got value', value))
        .catch(err => console.error('Error getting', err));
    })
    .catch(err => console.error('Error setting', err));

还有其他共享信息的方式,如离子用户和iOS swift都支持的NSUserdefaults等吗?

This教程是我一直关注的。

1 个答案:

答案 0 :(得分:0)

在ionic中,我必须使用应用程序首选项插件。这使我可以访问用户默认值,尽管要获取组必须更改ionic插件代码,以便我可以共享保存在ionic中的用户默认值并在应用程序扩展中获取相同的内容。

插件 https://ionicframework.com/docs/native/app-preferences/

//ionic code
let dict12 = this.appPref.suite('group.xxxxxxx')
        this.appPref.store('group.pmshare', 'keyNa', 'valueNa')
        console.log('dict: ' + dict12)
        this.appPref.fetch('group.pmshare', 'keyNa').then(str => {
        console.log('str: ' + str)
        })


// shared extension code
var defaults = UserDefaults.init(suiteName: "group.xxxxxxx")
        print(defaults?.string(forKey: "keyNa"))
        defaults?.set("fromExtValue", forKey: "fromExt")

始终记得在target-> app groups-> ON

下创建一个组

同一组将用于在两个应用程序之间共享数据。

这实际上可以用于iOS中的应用程序间通信。使用Ionic开发应用程序时。