RPC 関連モジュールは APMobileNetwork.framework と MPMglsAdapter です。 MPMglsAdapter の API を使用することをお勧めします。
このトピックでは、次の手順を実行してモバイルゲートウェイ SDK を使用する方法について説明します。
ゲートウェイサービスの初期化
次のメソッドを呼び出して、ゲートウェイサービスを初期化します。
[MPRpcInterface initRpc];以前のバージョンのスペックアップに関する注意事項
10.1.32 バージョン以降、DTRpcInterface クラスの Category ファイルを追加する必要はありません。中間層は meta.config から読み取るためのパッケージングを実装します。バージョンをスペックアップした後、古いバージョンの構成がプロジェクトに存在するかどうかを確認します。存在する場合は、削除します。以下は、新しいバージョンで削除する必要がある DTRpcInterface クラスの Category ファイルです。

RPC コードの生成
モバイルゲートウェイコンソールでアプリがバックグラウンドサービスに接続された後、クライアントの RPC コードをダウンロードできます。詳細については、「コードの生成」をご参照ください。
ダウンロードした RPC コードの構造は次のとおりです。

説明:
RPCDemoCloudpay_accountClientは RPC 構成です。RPCDemoAuthLoginPostReqはリクエストモデルです。RPCDemoLoginResultはレスポンスモデルです。
リクエストの送信
RPC リクエストは、サブスレッドで呼び出す必要があります。中間層の MPRpcInterface によってカプセル化されたサブスレッド呼び出しインターフェイスを使用できます。コールバックメソッドは、デフォルトでメインスレッドです。サンプルコードは次のとおりです。
- (void)sendRpc
{
__block RPCDemoLoginResult *result = nil;
[MPRpcInterface callAsyncBlock:^{
@try
{
RPCDemoLoginRequest *req = [[RPCDemoLoginRequest alloc] init];
req.loginId = @"alipayAdmin";
req.loginPassword = @"123456";
RPCDemoAuthLoginPostReq *loginPostReq = [[RPCDemoAuthLoginPostReq alloc] init];
loginPostReq._requestBody = req;
RPCDemoCloudpay_accountClient *service = [[RPCDemoCloudpay_accountClient alloc] init];
result = [service authLoginPost:loginPostReq];
}
@catch (NSException *exception) {
NSLog(@"%@", exception);
NSError *error = [userInfo objectForKey:@"kDTRpcErrorCauseError"]; // 例外詳細を取得します。
NSInteger code=error.code; // 例外詳細のエラーコードを取得します。
}
} completion:^{
NSString *str = @"";
if (result && result.success) {
str = @"ログオンに成功しました";
} else {
str = @"ログオンに失敗しました";
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:str message:nil delegate:nil
cancelButtonTitle:nil otherButtonTitles:@"ok", nil];
[alert show];
}];
}try catch を使用して例外をキャッチするには、ゲートウェイがスローされる際に、「ゲートウェイ結果コードの説明」に従って理由をクエリします。
カスタム構成のリクエスト
RPC リクエストメソッドの説明 DTRpcMethod は、RPC リクエストメソッド名、パラメーター、および戻り値の型を記録します。
リクエストに署名する必要がない場合は、
DTRpcMethodsignCheck属性を NO に設定できます。-(MPDemoUserInfo *) dataPostSetTimeout:(MPDemoPostPostReq *)requestParam { DTRpcMethod *method = [[DTRpcMethod alloc] init]; method.operationType = @"com.antcloud.request.post"; method.checkLogin = NO ; method.signCheck = NO ; method.returnType = @"@\"MPDemoUserInfo\""; return [[DTRpcClient defaultClient] executeMethod:method params:@[ ]]; }タイムアウト期間を設定する必要がある場合は、
DTRpcMethodtimeoutIntervalプロパティを構成できます。-(MPDemoUserInfo *) dataPostSetTimeout:(MPDemoPostPostReq *)requestParam { DTRpcMethod *method = [[DTRpcMethod alloc] init]; method.operationType = @"com.antcloud.request.post"; method.checkLogin = NO ; method.signCheck = YES ; method.timeoutInterval = 1; // このタイムアウト期間は、クライアントがゲートウェイからレスポンスを受信するまでの時間です。サーバーによって構成されたタイムアウト期間は、バックエンド 業務システム がレスポンスを返すまでの時間です。デフォルト値は 20 秒です。設定が 1 未満の場合は無効です。 method.returnType = @"@\"MPDemoUserInfo\""; return [[DTRpcClient defaultClient] executeMethod:method params:@[ ]]; }すべての API にヘッダーを追加する必要がある場合は、次の拡張メソッドを使用できます。
DTRpcClient-(MPDemoUserInfo *) dataPostAddHeader:(MPDemoPostPostReq *)requestParam { DTRpcMethod *method = [[DTRpcMethod alloc] init]; method.operationType = @"com.antcloud.request.postAddHeader"; method.checkLogin = NO ; method.signCheck = YES ; method.returnType = @"@\"MPDemoUserInfo\""; // API にヘッダーを追加します。 NSDictionary *customHeader = @{@"testKey": @"testValue"}; return [[DTRpcClient defaultClient] executeMethod:method params:@[ ] requestHeaderField:customHeader responseHeaderFields:nil]; }すべての API にヘッダーを追加する場合は、インターセプタを使用します。詳細については、「インターセプタの使用」を参照してください。詳細については、「サンプルコード」をご参照ください。
checkLogin属性は、インターフェイスsession検証に使用され、ゲートウェイコンソールと組み合わせて完了する必要があります。デフォルト設定は NO です。
カスタム RPC インターセプタ
ビジネス要件に基づいて、RPC が送信される前、または RPC が処理された後にロジック処理を実行する必要がある場合があります。RPC モジュールは、このような要件を処理するためのインターセプタメカニズムを提供します。
カスタムインターセプタ
インターセプタを作成し、プロトコル <DTRpcInterceptor> メソッドを実装して、操作前後に RPC リクエストを処理します。
@interface HXRpcInterceptor : NSObject<DTRpcInterceptor>
@end
@implementation HXRpcInterceptor
- (DTRpcOperation *)beforeRpcOperation:(DTRpcOperation *)operation{
// TODO
return operation;
}
- (DTRpcOperation *)afterRpcOperation:(DTRpcOperation *)operation{
// TODO
return operation;
}
@endインターセプタの登録
中間層の拡張インターフェイスを呼び出して、インターセプタコンテナーにカスタムサブインターセプタを登録できます。
HXRpcInterceptor *mpTestIntercaptor = [[HXRpcInterceptor alloc] init]; // カスタムサブインターセプタ
[MPRpcInterface addRpcInterceptor:mpTestIntercaptor];データの暗号化
RPC は、さまざまなデータ暗号化構成機能を提供します。詳細については、「データの暗号化」をご参照ください。
データ署名 ( 10.2.3 でサポート)
10.2.3 ベースライン RPC は、さまざまなデータ署名構成機能を提供します。 10.2.3 ベースラインでは、ワイヤレスボディガード SDK をスペックアップして、国密署名をサポートしています。スペックアップ後、このベースラインを使用するには、ワイヤレスボディガード画像を V6 バージョンに置き換える必要があります。
10.1.68 ベースラインのデフォルトは V5 バージョンです。プラグインを使用して V6 イメージを生成し、元の yw_1222.jpg ワイヤレスボディガード画像を置き換えるには、次の手順に従います。
mPaaS コマンドラインツールのインストール。コマンドラインツールはプラグインのインストールに含まれています。Xcode 署名を削除することで N を設定できます。
次のコマンドラインを使用して、新しいワイヤレスボディガード画像を生成します。
mpaas inst sgimage -c /path/to/Ant-mpaas-0D4F511111111-default-IOS.config -V 6 -t 1 -o /path/to/output --app-secret sssssdderrff --verbose説明構成ファイルディレクトリ、ターゲットファイルディレクトリ、および appsecret パラメーターを実際の値に置き換えます。
ワイヤレスボディガードで国密機能をサポートする場合は、次のコードに従ってカテゴリコードを構成し、署名アルゴリズムを設定してください。デフォルト構成は MPAASRPCSignTypeDefault ではなく、署名アルゴリズムは MD5 です。
署名アルゴリズムのオプション値は次のとおりです。
MD5: MPAASRPCSignTypeDefault (デフォルト)
SHA256: MPAASRPCSignTypeSHA256
HMACSHA256: MPAASRPCSignTypeHMACSHA256
SM3: MPAASRPCSignTypeSM3
サンプルコード:
#import <APMobileNetwork/DTRpcInterface.h> @interface DTRpcInterface (mPaaSDemo) @end @implementation DTRpcInterface (mPaaSDemo) - (MPAASRPCSignType)customRPCSignType { return MPAASRPCSignTypeSM3; } @end