mPaaS では、すべての JavaScript API(JSAPI)に対してアクセス制御を追加することをお勧めします。アクセス制御を追加するためのプラグインを設定できます。
プラグインを制御するための権限をカスタマイズします。
JSAPI 呼び出しイベントをリッスンしてインターセプトするプラグインをカスタマイズします。
プラグインがイベントをインターセプトした後、プラグインは現在のページの URL を取得します。プラグインは、文字列がホストとスキーム情報に一致するかどうかを確認することをお勧めします。
@interface MPPlugin4WebView : NBPluginBase @end @implementation MPPlugin4WebView - (void)pluginDidLoad { self.scope = kPSDScope_Scene; // -- 呼び出されている JSAPI に関する情報をインターセプトします。 [self.target addEventListener:kEvent_Invocation_Event_Start withListener:self useCapture:NO]; [self.target addEventListener:kEvent_Invocation_Invoke withListener:self useCapture:NO]; [super pluginDidLoad]; } - (void)handleEvent:(PSDEvent *)event { [super handleEvent:event]; if([kEvent_Invocation_Event_Start isEqualToString:event.eventType] || [kEvent_Invocation_Invoke isEqualToString:event.eventType]){ PSDInvocationEvent *invocationEvent = (PSDInvocationEvent *)event; NSString *apiName = invocationEvent.invocationName; NSDictionary *data = invocationEvent.invocationData; // 現在のページの URL を取得し、文字列がスキームとホスト情報に一致するかどうかを確認します。 NSURL *url = event.context.currentViewController.url; if (![url.host isEqualToString:@"xxx"] || ![url.scheme isEqualToString:@"xxx"]) { [event preventDefault]; [event stopPropagation]; return; } } } - (int)priority { return PSDPluginPriority_High+1; }重要URL は完全一致が必要です。少なくとも URI クラスのスキームとホスト情報は一致する必要があります。正規表現によるマッチングは使用しないか、注意して使用してください。 contains、startsWith、endsWith、indexOf などの不正確な関数の使用は避けてください。
プラグインを登録します。
mPaaS の HTML5 コンテナが初期化されるときに、カスタムプラグインへのパスを指定します。
カスタムプラグインのバンドル内の plist ファイルを開き、前の手順でカスタマイズしたプラグインを登録します。詳細については、「プラグインを登録する」をご参照ください。
