Swift製のアプリをRN化するにあたり、Swiftで
let keychain = Keychain(service: BUNDLE_IDENTIFIER)
keychain["token"] = token
したものをReactNativeで取りたかった。
最初に試したのは、oblador/react-native-keychain: Keychain Access for React Native。
import * as Keychain from 'react-native-keychain'
Keychain
.getGenericPassword()
.then(credentials => {
console.log(credentials)
})
=> { service: BUNDLE_IDENTIFIER, username: {}, password: '2' }
passwordのところに取りたい文字列の最初の1文字だけが入ってくるというよくわからない状態になった。
Obj-cの中身を直す元気はなかったので別ライブラリを検討することに。
お次はclassapp/react-native-sensitive-info: Android Shared Preferences and iOS Keychain for React Native。
import SInfo from 'react-native-sensitive-info';
SInfo.getItem('token', {
sharedPreferencesName: BUNDLE_IDENTIFIER,
keychainService: BUNDLE_IDENTIFIER
}).then(token => {
console.log(token)
})
であっさり取れた。
もっと長々とハマるかと思っていたので助かった。