Salesforce Mobile SDK        ISV Architect, 中嶋 一樹
Safe HarborSafe harbor statement under the Private Securities Litigation Reform Act of 1995:This presentation may contain ...
ネイティブアプリ
iOSネイティブアプリの特徴•リッチなユーザーインターフェース•デバイス機能の活用•App Storeでの配信•XcodeとObjective Cで開発•ホーム画面に残る
Force.comと連携するiOSネイティブアプリのアーキテクチャ         データベース              Apex     ③リクエスト   API                              ①認証・認可   ...
Demo App
Mobile SDKのインストールとプロジェクト作成 Xcodeのインストール githubのレポジトリをクローン(ダウンロード) $ git clone https://github.com/forcedotcom/SalesforceMob...
Mobile SDK Nativeテンプレートの構造 AppDelegate     Consumer IDとCallback URLを設定 RootViewController     認証後のアプリケーションのメイン画面を制御     *サ...
SFNativeRestAppDelegate   didFinishLauchingWithOptions:(NSDictionary *)launchOptions        setupAuthorizingViewController...
RootViewController viewDidLoad        メニューバーのタイトルをセット        Force.comからユーザー名を10個取得SFRestRequest *request = [[SFRestAPI sh...
UIApplicationDelegate    UIAlertViewDelegate       UIViewController       UITableViewController                        SFA...
CRUD操作レコード作成NSString *objectType = @"Contact";NSDictionary *fields = [@"{FirstName:Kazuki, LastName:Nakajima}" JSONValue];...
ハイブリッドアプリ
iOSハイブリッドアプリの特徴•Web技術での開発•デバイス機能を呼び出し可能•App Storeでの配信•ホーム画面に残る
Force.comと連携するiOSハイブリッドアプリのアーキテクチャ         データベース              Apex     ③リクエスト   API                                    ①認...
Demo App
プロジェクト作成 Hybrid Force.com Appテンプレートからプロジェクトを作成 *Use Automatic Reference Countingのチェックをはずす wwwフォルダを右クリックして一旦削除する ポップアップではRe...
Mobile SDK Hybridテンプレートの構造 bootconfig.js     Consumer IDとCallback URL等の設定を記述 forcetk.js     Force.com JavaScript REST Toolk...
bootconfig.js  debugMode = true | false;       logToConsoleメソッドの出力がスクリーンに表示されるかどうか  remoteAccessConsumerKey = xxx;       コ...
index.html   jQuery(document).ready(function(){}        devicereadyイベント発生時にonDeviceReady()をキックすることを登録   onDeviceReady(){} ...
PhongeGap.plist*ファイルの場所はプロジェクト名 > Supporting Files > PhoneGap.plistExternalHosts      JavaScriptやCSSのライブラリを外部サーバから読み込む場合はド...
Force.com JavaScript REST Toolkit   インスタンス生成       var forcetkClient = new forcetk.Client(clientId, loginUrl, proxyUrl);  ...
PhoneGapで提供される機能             加速度センサー                             位置情報             カメラ                                 プッシュ...
ありがとうございました!
Tech talk   salesforce mobile sdk
Upcoming SlideShare
Loading in …5
×

Tech talk salesforce mobile sdk

4,826 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,826
On SlideShare
0
From Embeds
0
Number of Embeds
2,776
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tech talk salesforce mobile sdk

  1. 1. Salesforce Mobile SDK ISV Architect, 中嶋 一樹
  2. 2. Safe HarborSafe harbor statement under the Private Securities Litigation Reform Act of 1995:This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any suchuncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differmaterially from the results expressed or implied by the forward-looking statements we make. All statements other thanstatements of historical fact could be deemed forward-looking, including any projections of product or service availability,subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans ofmanagement for future operations, statements of belief, any statements concerning new, planned, or upgraded services ortechnology developments and customer contracts or use of our services.The risks and uncertainties referred to above include – but are not limited to – risks associated with developing anddelivering new functionality for our service, new products and services, our new business model, our past operating losses,possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of oursecurity measures, the outcome of intellectual property and other litigation, risks associated with possible mergers andacquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain,and motivate our employees and manage our growth, new releases of our service and successful customer deployment, ourlimited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Furtherinformation on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual reporton Form 10-Q for the most recent fiscal quarter ended April 30, 2011. This documents and others containing importantdisclosures are available on the SEC Filings section of the Investor Information section of our Web site.Any unreleased services or features referenced in this or other presentations, press releases or public statements are notcurrently available and may not be delivered on time or at all. Customers who purchase our services should make thepurchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and doesnot intend to update these forward-looking statements.
  3. 3. ネイティブアプリ
  4. 4. iOSネイティブアプリの特徴•リッチなユーザーインターフェース•デバイス機能の活用•App Storeでの配信•XcodeとObjective Cで開発•ホーム画面に残る
  5. 5. Force.comと連携するiOSネイティブアプリのアーキテクチャ データベース Apex ③リクエスト API ①認証・認可 リソースサーバ 認証サーバ Force.com ②アクセストークン Salesforce Mobile SDK iOS SDK
  6. 6. Demo App
  7. 7. Mobile SDKのインストールとプロジェクト作成 Xcodeのインストール githubのレポジトリをクローン(ダウンロード) $ git clone https://github.com/forcedotcom/SalesforceMobileSDK-iOS.gt インストールスクリプトを実行 $ cd SalesforceMobileSDK-iOS/ $ ./install.sh Native Force.com REST Appテンプレートからプロジェクトを作成 *Use Automatic Reference Countingのチェックをはずす
  8. 8. Mobile SDK Nativeテンプレートの構造 AppDelegate Consumer IDとCallback URLを設定 RootViewController 認証後のアプリケーションのメイン画面を制御 *サンプルアプリではユーザ名を10個取得し、テーブルビューに表示 SFAuthorizingViewController 認証画面を制御 SFNativeRestAppDelegate UIApplicationDelegateプロトコルに従い、アプリケーション起動から認証までの挙動を 担当
  9. 9. SFNativeRestAppDelegate didFinishLauchingWithOptions:(NSDictionary *)launchOptions setupAuthorizingViewControllerをキック setupAuthorizingViewController rootViewControllerにSFAuthorizingViewControllerのインスタンスをセットし、アク ティブに loggedIn newRootViewControllerをキックしrootViewControllerに RootViewController(アプリのコントローラ)をセットし、アクティブに *newRootViewControllerはAppDelegateで実装されている
  10. 10. RootViewController viewDidLoad メニューバーのタイトルをセット Force.comからユーザー名を10個取得SFRestRequest *request = [[SFRestAPI sharedInstance] requestForQuery:@"SELECT Name FROM User LIMIT 10"];[[SFRestAPI sharedInstance] send:request delegate:self]; didLoadResponse:(id)jsonResponse レスポンスをself.datarowsにセット cellForRowAtIndexPath:(NSIndexPath *)indexPath テーブルのセルをデキューまたは生成し、ユーザー名をセット
  11. 11. UIApplicationDelegate UIAlertViewDelegate UIViewController UITableViewController SFAuthCoodinatorDelegate Subclass SFAuthorizingViewController Protocol SFNativeRestAppDelegate Subclass Subclass AppDelegate RootViewController Import Import SFRestAPI SFRestRequest
  12. 12. CRUD操作レコード作成NSString *objectType = @"Contact";NSDictionary *fields = [@"{FirstName:Kazuki, LastName:Nakajima}" JSONValue];SFRestRequest *request = [[SFRestAPI sharedInstance] requestForCreateWithObjectType:objectType fields:fields];[[SFRestAPI sharedInstance] send:request delegate:self];レコード削除NSString *objectId = @"1234567890";NSString *objectType = @"Contact"; SFRestRequest *request = [[SFRestAPI sharedInstance] requestForDeleteWithObjectType:objectType objectId:objectId];[[SFRestAPI sharedInstance] send:request delegate:self];
  13. 13. ハイブリッドアプリ
  14. 14. iOSハイブリッドアプリの特徴•Web技術での開発•デバイス機能を呼び出し可能•App Storeでの配信•ホーム画面に残る
  15. 15. Force.comと連携するiOSハイブリッドアプリのアーキテクチャ データベース Apex ③リクエスト API ①認証・認可 リソースサーバ 認証サーバ Force.com ②アクセストークン Force.com Javascript REST Toolkit Salesforce Mobile SDK iOS SDK
  16. 16. Demo App
  17. 17. プロジェクト作成 Hybrid Force.com Appテンプレートからプロジェクトを作成 *Use Automatic Reference Countingのチェックをはずす wwwフォルダを右クリックして一旦削除する ポップアップではRemove Referencesをクリック プロジェクトを右クリックしてshow in finderを選択し、wwwフォルダをドラッグ& ドロップでプロジェクトに追加する *Copy items into destination group’s folder (if needed)を選択 *Create folder references for any added foldersを選択 wwwフォルダが青色であることを確認する
  18. 18. Mobile SDK Hybridテンプレートの構造 bootconfig.js Consumer IDとCallback URL等の設定を記述 forcetk.js Force.com JavaScript REST Toolkit。RESTアクセスのラッパー index.html アプリケーションのメイン画面 inline.js サンプルアプリの処理 SalesforceOAuthPlugin.js PhoneGapのAPIを利用して認証処理を実装 phonegap-x.x.x.js PhoneGapのAPIを提供
  19. 19. bootconfig.js debugMode = true | false; logToConsoleメソッドの出力がスクリーンに表示されるかどうか remoteAccessConsumerKey = xxx; コンシューマ をセット oauthRedirectURI = [xxx] コールバックURLをセット oauthScopes = [xxx,xxx]; 発行されるトークンの権限 startData = new SFHybridApp.LocalAppStartData(); | new SFHybridApp.RemoteAppStartData("[VFページのパス]"); コンテンツがローカル管理の場合はLocalAppStartData()をセット コンテンツがVisualforce管理の場合はRemoteAppStartData()をセット autoRefreshOnForeground = true | false; OAuthセッションを自動リフレッシュするかどうか
  20. 20. index.html jQuery(document).ready(function(){} devicereadyイベント発生時にonDeviceReady()をキックすることを登録 onDeviceReady(){} SalesforceOAuthPlugin.getAuthCredentials()をキック salesforceSessionRefreshイベント発生時にsalesforceSessionRefreshed()をキックする ことを登録 reLinkClickHandlers()をキック(サンプルアプリのクリックイベントを登録) salesforceSessionRefreshed(){} forcetk.Clientのインスタンスを生成し、認証で得られたトークンをセット
  21. 21. PhongeGap.plist*ファイルの場所はプロジェクト名 > Supporting Files > PhoneGap.plistExternalHosts JavaScriptやCSSのライブラリを外部サーバから読み込む場合はドメインを明記する必要がある
  22. 22. Force.com JavaScript REST Toolkit インスタンス生成 var forcetkClient = new forcetk.Client(clientId, loginUrl, proxyUrl); トークンセット forcetkClient.setSessionToken(sessionId, apiVersion, instanceUrl); レコード作成 forcetkClient.create(objtype, fields, callback, error); レコード削除 forcetkClient.del(objtype, id, callback, error); SOQL発行 forcetkClient.query(soql, callback, error); Apex Rest発行 forcetk.Client.apexrest(path, callback, error, method, payload, retry);
  23. 23. PhoneGapで提供される機能 加速度センサー 位置情報 カメラ プッシュ通知 コンパス 音楽データ 連絡先 マイク ストレージ 回線カメラ呼び出しの例 $j(document).on(tap, #page_create_survey #button_capture_business_card, function(){ navigator.camera.getPicture(onCameraSuccess, onCameraFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL }); }); 各APIについて詳しくはhttp://docs.phonegap.com/en/1.6.1/index.htmlを参照
  24. 24. ありがとうございました!

×