03 salesforce mobilesdkの+(プラス)なお話
DESCRIPTION
TerraSky Power Night 2014/05/09 開催 講演資料TRANSCRIPT
![Page 1: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/1.jpg)
Salesforce Mobile SDKの +(プラス)なお話
株式会社テラスカイ 第2ソリューション部第2チーム 溝口 大地
![Page 2: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/2.jpg)
アジェンダ
Blocksパターンを使おう!
QueryBuilderを使ってみよう!
ログインユーザーのIDを取得しよう!
Push通知を使ってみよう!
![Page 3: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/3.jpg)
Salesforce Mobile SDKの Blocksパターンを使おう!
![Page 4: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/4.jpg)
Delegate or Blocks?
http://www.terrasky.co.jp/blog/
![Page 5: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/5.jpg)
NSString *soqlQuery = @"SELECT Id FROM User Where Name = 'hoge' LIMIT 1" !SFRestRequest *request = [[SFRestAPI sharedInstance]requestForQuery:soqlQuery]; ![[SFRestAPI sharedInstance] send:request delegate:self];
DelegateパターンでSalesforceにクエリーを投げる場合
コレが呼ばれると
![Page 6: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/6.jpg)
DelegateパターンでSalesforceにクエリーを投げる場合
コレが呼ばれます
- (void)request:(SFRestRequest *)request didLoadResponse:(id)jsonResponse;
![Page 7: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/7.jpg)
これが厄介!
![Page 8: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/8.jpg)
DelegateパターンでSalesforceにクエリーを投げる場合
- (void)request:(SFRestRequest *)request didLoadResponse:(id)jsonResponse { switch (tag) { case 0: //Insertの処理結果 break; case 1: //Updateの処理結果 break; case 2: //Deleteの処理結果 break; case 3: //SOQLクエリーの処理結果 break; case 4: //Describe情報検索の処理結果 break; //etc..... default: break; } }
メソッドの中に処理がたくさん・・・
![Page 9: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/9.jpg)
見づらい!!
![Page 10: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/10.jpg)
そうだ!Blocksパターンを使おう!
#import "SFRestAPI+Blocks.h"
![Page 11: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/11.jpg)
BlocksパターンでSalesforceにクエリーを投げる場合
NSString *soqlQuery = @"SELECT Id FROM User Where Name = 'hoge' LIMIT 1"; [[SFRestAPI sharedInstance] performSOQLQuery:soqlQuery failBlock:^(NSError *e){[self queryFailed:e];} completeBlock:^(NSDictionary *result){[self searchUserCompleted:result];}];
コールバック先を指定出来る!
NSString *soqlQuery = @"SELECT Id FROM User Where Name = 'hoge' LIMIT 1" !SFRestRequest *request = [[SFRestAPI sharedInstance]requestForQuery:soqlQuery]; ![[SFRestAPI sharedInstance] send:request delegate:self];
![Page 12: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/12.jpg)
ということは?
![Page 13: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/13.jpg)
BlocksパターンでSalesforceにクエリーを投げる場合
実行と結果を明確に分離出来る!
- (void)searchUser; - (void)searchUserCompleted; !- (void)insertUser; - (void)insertUserCompleted; !- (void)updateUser; - (void)updateUserCompleted; //ロジックは省略
![Page 14: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/14.jpg)
素敵!
![Page 15: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/15.jpg)
#import "SFRestAPI+QueryBuilder.h"
QueryBuilderを使ってみよう!
![Page 16: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/16.jpg)
QueryBuilderを使ってみよう
NSString *soqlQuery = @"SELECT Id, Name FROM User Where Name = 'hoge' LIMIT 1";
NSString *soqlQuery = [SFRestAPI SOQLQueryWithFields:@[@"Id",@"Name"] sObject:@"User" where:@"Name = 'hoge'" groupBy:nil having:nil orderBy:nil limit:1];
こんな風に書き換えられます!
![Page 17: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/17.jpg)
QueryBuilderを使ってみよう
[SFRestAPI SOQLQueryWithFields:@[@"Id",@"Name"] //SELECTの項目名を指定 sObject:@"User" // オブジェクト名を指定 where:@"Name = 'hoge'" // WHERE句の条件を指定 groupBy:nil //GROUP BY句の条件を指定 having:nil //HAVING句の条件を指定 orderBy:nil //ORDER BY句の条件を指定 limit:1]; // LIMITの条件を指定(0の場合はLIMIT無し)
![Page 18: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/18.jpg)
これは便利!
![Page 19: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/19.jpg)
ログインユーザーのIDを取得しよう!
#import "SFIdentityData.h"
![Page 20: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/20.jpg)
Salesforce Mobile SDKで Apexで言う
String userid = UserInfo.getUserId(); !
ってどうやるの?
![Page 21: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/21.jpg)
ログインユーザーのIDを取得しよう!
[SFAccountManager sharedInstance].idData]
これだけでログインしているユーザー情報が 取得出来ます
ユーザー情報
![Page 22: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/22.jpg)
IDを取得する場合は?
![Page 23: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/23.jpg)
ログインユーザーのIDを取得しよう!
NSString *userId = [SFAccountManager sharedInstance].idData.userId;
こんな風にIDが取れます! (もちろん、その他のユーザー情報項目も)
ユーザーID
![Page 24: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/24.jpg)
簡単!
![Page 25: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/25.jpg)
Salesforce Mobile SDKの Push通知を使ってみよう!
![Page 26: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/26.jpg)
SalesforceMobileSDKのPush通知を使ってみよう!
まず、コレを有効にします (証明書の登録方法は割愛させて頂きます・・・)
作成→アプリケーションから
![Page 27: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/27.jpg)
SalesforceMobileSDKのPush通知を使ってみよう!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
次に、AppDelegate.mの
[[SFPushNotificationManager sharedInstance] registerForRemoteNotifications];
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
[[SFPushNotificationManager sharedInstance] didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; if ([SFAccountManager sharedInstance].credentials.accessToken != nil) { [[SFPushNotificationManager sharedInstance] registerForSalesforceNotifications]; }
と
の2箇所の処理のコメントアウトを外します。
![Page 28: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/28.jpg)
えっ
![Page 29: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/29.jpg)
それだけ?
![Page 30: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/30.jpg)
それだけです! !
では、Push通知のデモを見てみましょう
![Page 31: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/31.jpg)
まとめ
![Page 32: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/32.jpg)
まとめ
みなさんもモバイル開発を始めましょう!
これからも機能拡張される(はず!)
Salesforce Mobile SDKはSalesforceとやり取りするのに便利な機能が用意されています
![Page 33: 03 salesforce mobilesdkの+(プラス)なお話](https://reader033.vdocuments.pub/reader033/viewer/2022052904/557ad38bd8b42a0b188b51d5/html5/thumbnails/33.jpg)
ご清聴ありがとうございました!