はじめに
Phone Appli Advent Calendar 2020 12日目です。
書くこと
- Salesforce Mobile SDKについて
- Salesforce Mobile SDK の導入からログインまで
書かないこと
- コードそのものについて
プロジェクトの作り方などはすっ飛ばしてるので、モバイル開発をやったことがある人向けとなります。
Salesforce Mobile SDK について
Salesforce Mobile SDK(以下、Mobile SDK)とはSalesforceが提供しているモバイル開発向けライブラリです。
開発者ガイド
Mobile SDK は、クラウドでのプッシュ通知、地理位置情報、分析、コラボレーションツール、ビジネスロジックなど、幅広いプラットフォームモバイルサービスをサポートしています。これらのサービスにより、モバイルアプリケーションが大幅に強化されるとともに、開発時間が短縮されます。
とあるように、Mobile SDKを使うことによってログイン画面の構築だったり、アクセストークンの管理を全て任せることができるので、開発がめっちゃ楽になります
やってみよう
環境
- Swift 5
- Xcode 12.2
- iOS 14.0 ~
- CocoaPods 1.9.3
Mobile SDK のインストール
今回はCocoaPodsを使ってインストールしていきます。
target 'SalesforceMobileSDKSample' do
use_frameworks!
# ①
source 'https://github.com/forcedotcom/SalesforceMobileSDK-iOS-Specs.git'
source 'https://cdn.cocoapods.org/'
source 'https://github.com/CocoaPods/Specs.git'
# ②
pod 'SalesforceSDKCore'
end
① SalesforceMobileSDK-iOS-Specs リポジトリをソースとして追加します。必ず最初にこのエントリをCocoaPods ソースパスより前に配置します。
② 今回はログインが目的なのでSalesforceSDKCore
のみインストールします。
設定ファイルを作る
Mobile SDK はbootconfig
という名前のファイルを設定ファイルとして参照します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>remoteAccessConsumerKey</key>
<string>①</string>
<key>oauthRedirectURI</key>
<string>②</string>
<key>oauthScopes</key>
<array>
<string>web</string>
<string>api</string>
</array>
<key>shouldAuthenticate</key>
<true/>
</dict>
</plist>
① Salesforceアクセスコンシューマキー
② 設定済みのリダイレクトURL
ログイン処理
今回はSwiftUIを使用しています。
import SwiftUI
import SalesforceSDKCore
import Combine
@main
struct SalesforceMobileSDKSampleApp: App {
// ①
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
@StateObject private var loginViewModel = LoginViewModel()
var body: some Scene {
WindowGroup {
if loginViewModel.isUser {
Text("ログインしている")
} else {
Text("ログインしていない")
}
}
}
}
class LoginViewModel: ObservableObject {
@Published var isUser: Bool = false
init() {
// 実際のログイン処理
AuthHelper.loginIfRequired {
self.isUser = (UserAccountManager.shared.currentUserAccount != nil)
}
}
}
① Mobile SDK がAppDelegateを必要としているため使用しています。
結果
ここまで実装してアプリを起動すると
Salesforceが推奨するログイン画面が表示されます。
終わりに
ログイン画面の開発をしたことがあるひとであれば、コードの少なさに驚いたのでは無いでしょうか。
2、3行のコードでログイン処理を行えるのはありがたいことです。
他にもMobile SDKにはMobile Sync
、Smart Store
などの便利な機能があるので、Salesforce+モバイル開発で行えることが増えそうな予感がします。
サンプルコードも公開されているので、興味ある人は実際に触ってみましょう