Swift에서 키 숨김 (plist 사용)

8402 단어 SwiftNCMB
NCMB는 애플리케이션 키와 클라이언트 키를 사용하여 백엔드 서비스를 활용합니다. 이 두 가지 키를 어디에 쓰는지에 따라 유지 보수성과 보안성이 담보됩니다.

몇 가지 방법이 있지만, 이번에는 plist를 이용한 방법으로 키의 은폐화를 실시합니다.

참고



API key를 .plist에 String으로 저장하고 숨기기 (예 : Google Maps Api) - Qiita 를 참고로 했습니다.

KeyManager 추가



적절한 파일 (아니면 OK)을 만들어 KeyManager를 정의합니다.
struct KeyManager {
    private let keyFilePath = Bundle.main.path(forResource: "APIKey", ofType: "plist")
    func getKeys() -> NSDictionary? {
        guard let keyFilePath = keyFilePath else {
            return nil
        }
        return NSDictionary(contentsOfFile: keyFilePath)
    }
    func getValue(key: String) -> AnyObject? {
        guard let keys = getKeys() else {
            return nil
        }
        return keys[key]! as AnyObject
    }
}

plist 파일 만들기



새 파일(Property List)을 만들고 이름을 APIKey로 지정합니다.



그 안에 applicationKey와 clientKey라는 2개의 키의 정의와 NCMB로부터 부여되는 캐릭터 라인을 기술합니다.



SDK 설치



NCMB의 Swift SDK를 설치하는 것은 Swift Packages를 사용하기 쉽습니다. File 메뉴에서 Swift Packages > Add Package Dependency를 선택합니다.



나온 대화 상자에서 Swift SDK의 Git 리포지토리 URL을 입력합니다. GitHub 리포지토리에서 HTTPS로 검색할 수 있는 URL 또는 아래 URL이 될 수 있습니다.


https://github.com/NIFCLOUD-mbaas/ncmb_swift.git

버전은 최신 버전일 수 있습니다.



후에는 Finish 버튼을 누르면 완료됩니다.



초기화



이번에는 SwiftUI를 이용하고 있습니다. 라이프 사이클은 SwiftUI App입니다.

먼저 SDK를 가져옵니다.
import SwiftUI
import NCMB

그런 다음 scenePhase를 추가합니다.
@main
struct forumApp: App {
    // 追加
    @Environment(\.scenePhase) private var scenePhase

다음은 body 에서 onChange 를 사용하여 초기화합니다. 키는 KeyManager().getValue 에서 얻을 수 있습니다.
var body: some Scene {
    WindowGroup {
        ContentView()
    }.onChange(of: scenePhase) { scene in
        switch scene {
        case .active:
            // キーの取得
            let applicationKey = KeyManager().getValue(key: "applicationKey") as! String
            let clientKey = KeyManager().getValue(key: "clientKey") as! String
            // 初期化
            NCMB.initialize(applicationKey: applicationKey, clientKey: clientKey)
        case .background: break
        case .inactive: break
        default: break
        }
    }
}

Git 리포지토리에 등록하지 않기



이후에는 APIKey.plist 를 .gitignore에 등록해 두면, 버전 관리 대상외가 되기 때문에, Git 리포지터리에 잘못 올려 버리는 일도 없을 것입니다.
echo (プロジェクト名)/APIKey.plist >> .gitignore

요약



키를 코드 중에 쓰면 메인터넌스성이 나빠지거나 개발 환경과 프로덕션 환경을 나누어 관리하는 것도 귀찮아집니다. Property List이면 Xcode 표준의 구조가 되므로, 외부 라이브러리를 인스톨 하는 일 없이, 간편하게 사용할 수 있을 것입니다.

mBaaS로 서버 개발 불필요! 니후쿠라 mobile backend

좋은 웹페이지 즐겨찾기