我创建了一个混合应用程序,我们在其中使用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教程是我一直关注的。
答案 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开发应用程序时。