LoginSignup
3
1

More than 3 years have passed since last update.

Salesforce Mobile SDK を使う

Last updated at Posted at 2020-12-11

はじめに

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を使うことによってログイン画面の構築だったり、アクセストークンの管理を全て任せることができるので、開発がめっちゃ楽になります:santa:

やってみよう

環境

  • Swift 5
  • Xcode 12.2
  • iOS 14.0 ~
  • CocoaPods 1.9.3

Mobile SDK のインストール

今回はCocoaPodsを使ってインストールしていきます。

Podfile

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という名前のファイルを設定ファイルとして参照します。

bootconfig.plist

<?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を使用しています。

SalesforceMobileSDKSampleApp.swift
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 SyncSmart Storeなどの便利な機能があるので、Salesforce+モバイル開発で行えることが増えそうな予感がします。

サンプルコードも公開されているので、興味ある人は実際に触ってみましょう:runner:

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1