Swift SDKのTipsです。ACLはデータをセキュアに、安全に利用する上で必須の機能になります。他のSDKと比べてSwift SDKでの設定方法が多少特徴的なので紹介します。
Swift SDKの導入法
Swift SDKはCocoaPods向けに提供しています。Xcodeで新しいiOSプロジェクトを作ったら、Podfileを用意します。
# Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'todoapp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for todoapp pod 'NCMB', :git => 'https://github.com/NIFCLOUD-mbaas/ncmb_swift.git' end
そして pod install
でSwift SDKをインストールします。
初期化について
現在、新規でiOSアプリを作成すると、InterfaceがSwiftUI、Life CycleがSwiftUI Appとなっています。この状態で作ると AppDelegate.swift
はなく、 (アプリ名)App.swift
というファイルが作られます。
この場合、まずSwift SDKを読み込みます。
import SwiftUI import NCMB // 追加
そして var body
の上に @Environment
を追加します。
@Environment(\.scenePhase) private var scenePhase // 追加 var body: some Scene {
最後に WindowGroup
に onChange
を追加します。このonChangeの中で初期化処理を行います。
WindowGroup { ContentView() } .onChange(of: scenePhase) { scene in switch scene { case .active: NCMB.initialize(applicationKey: "YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY") } }
これで利用可能になります。
ACLの新規作成
ACLを作成するコードは var acl = NCMBACL.empty
です。
// ACLを作成 var acl = NCMBACL.empty
ACLを設定する
ACLは次の3種類があります。
- 任意(未ログインユーザ含む)
- 特定のユーザ
- 特定のロール(グループ)
任意(未ログインユーザ含む)
任意の場合はキーとして *
を指定します。そして読み込み権限 readable 、編集権限を writable で指定します。
acl.put(key: "*", readable: true, writable: true)
これは他のSDKでいうところの setPublicReadAccess
と setPublicWriteAccess
に相当します。
特定のユーザ
特定のユーザを指定する場合はキーとしてユーザのオブジェクトIDを指定します。他は任意の場合と同じです。
acl.put(key: user.objectId!, readable: true, writable: true)
これは他のSDKでいうところの setUserReadAccess
と setUserWriteAccess
に相当します。
特定のロール(グループ)
特定のロール(グループ)を指定する場合はキーとして role:(ロール名)
という形で指定します。他は任意の場合と同じです。
// Adminロールに対して権限を設定する acl.put(key: "role:Admin", readable: true, writable: false)
これは他のSDKでいうところの setRoleReadAccess
と setRoleWriteAccess
に相当します。
データストアに対してACLを設定する
データストアへACLを設定する場合は、NCMBObject のaclプロパティに対してACLを設定してください。
obj.acl = acl
ファイルストアに対してACLを設定する
ファイルストアの場合は初期化する際に設定します。
let file : NCMBFile = NCMBFile(fileName: "ncmb.txt", acl: acl)
まとめ
ACLを使いこなせばクエリ条件を指定せずに必要なデータだけを取得できるようになったり、各ユーザのデータを細かく管理できるようになります。ぜひ使いこなしてください。