03 salesforce mobilesdkの+(プラス)なお話
-
Upload
terrasky -
Category
Technology
-
view
1.292 -
download
1
description
Transcript of 03 salesforce mobilesdkの+(プラス)なお話
Salesforce Mobile SDKの +(プラス)なお話
株式会社テラスカイ 第2ソリューション部第2チーム 溝口 大地
アジェンダ
Blocksパターンを使おう!
QueryBuilderを使ってみよう!
ログインユーザーのIDを取得しよう!
Push通知を使ってみよう!
Salesforce Mobile SDKの Blocksパターンを使おう!
Delegate or Blocks?
http://www.terrasky.co.jp/blog/
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にクエリーを投げる場合
コレが呼ばれると
DelegateパターンでSalesforceにクエリーを投げる場合
コレが呼ばれます
- (void)request:(SFRestRequest *)request didLoadResponse:(id)jsonResponse;
これが厄介!
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; } }
メソッドの中に処理がたくさん・・・
見づらい!!
そうだ!Blocksパターンを使おう!
#import "SFRestAPI+Blocks.h"
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];
ということは?
BlocksパターンでSalesforceにクエリーを投げる場合
実行と結果を明確に分離出来る!
- (void)searchUser; - (void)searchUserCompleted; !- (void)insertUser; - (void)insertUserCompleted; !- (void)updateUser; - (void)updateUserCompleted; //ロジックは省略
素敵!
#import "SFRestAPI+QueryBuilder.h"
QueryBuilderを使ってみよう!
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];
こんな風に書き換えられます!
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無し)
これは便利!
ログインユーザーのIDを取得しよう!
#import "SFIdentityData.h"
Salesforce Mobile SDKで Apexで言う
String userid = UserInfo.getUserId(); !
ってどうやるの?
ログインユーザーのIDを取得しよう!
[SFAccountManager sharedInstance].idData]
これだけでログインしているユーザー情報が 取得出来ます
ユーザー情報
IDを取得する場合は?
ログインユーザーのIDを取得しよう!
NSString *userId = [SFAccountManager sharedInstance].idData.userId;
こんな風にIDが取れます! (もちろん、その他のユーザー情報項目も)
ユーザーID
簡単!
Salesforce Mobile SDKの Push通知を使ってみよう!
SalesforceMobileSDKのPush通知を使ってみよう!
まず、コレを有効にします (証明書の登録方法は割愛させて頂きます・・・)
作成→アプリケーションから
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箇所の処理のコメントアウトを外します。
えっ
それだけ?
それだけです! !
では、Push通知のデモを見てみましょう
まとめ
まとめ
みなさんもモバイル開発を始めましょう!
これからも機能拡張される(はず!)
Salesforce Mobile SDKはSalesforceとやり取りするのに便利な機能が用意されています
ご清聴ありがとうございました!