我已经创建了一个混合应用程序,其中我们使用ionic上传文件。
对于iOS,我们创建了一个共享扩展来上传文件,现在正在尝试将凭据从ionic应用程序传递到iOS中的共享扩展。
我使用了ionic native和iOS都支持的iOS密钥链机制。
我在swift和key chain实现中编写的共享扩展在ionic应用程序中使用了类似ionic plugin的包装器。
我可以在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
在ionic中:
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));
有没有其他方式可以共享信息,比如ionic和iOS swift都支持的NSUserdefaults等?
This教程就是我一直在遵循的。
发布于 2018-08-24 12:20:23
在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")
请始终记住在目标->应用组->打开下创建一个组
将使用相同的组在两个应用程序之间共享数据。
这实际上可以用于iOS中的应用程序间通信。当应用程序是使用Ionic开发的。
https://stackoverflow.com/questions/51979045
复制相似问题