DocuSign API返回URL,在重定向后将控制权从WebView转移回React-Native应用程序

时间:2016-03-25 08:26:18

标签: android ios react-native docusignapi

我正在使用React-Native来构建Android应用程序。我也在使用DocuSign Java API。

我的工作流程提交了一个RecipientViewRequest,并收到一个Android应用程序必须在WebView中查看的URL才能执行签名:

https://github.com/docusign/docusign-rest-recipes/blob/master/core_recipes/CoreRecipes.java

https://facebook.github.io/react-native/docs/webview.html

这是代码:

'use strict';

var React = require('react-native');
var {
  StyleSheet,
  View,
  WebView,
  Component,
} = React;

class DocuSignView extends Component {

  render() {
    var recipientViewURL = this.props.route.data.url;
    console.log('Recipient URL is: ' + recipientViewURL);
    return (
      <View style={styles.container}>
        <WebView
          source={{uri: recipientViewURL, method: 'GET'}}
          scalesPageToFit={true}
          javaScriptEnabled={true}
          domStorageEnabled={true}
        >
      </WebView>
      </View>
    );
  }
}

DocuSign服务器将WebView重定向到我提供的returnURL

如何指定将控制权返回给我的React-Native android应用程序的returnURL?

(对于React-Native,iOS或Android的通用答案会更好)。

2 个答案:

答案 0 :(得分:4)

一个选项是使用onNavigationStateChange事件处理程序拦截并从WebView获取控件:

render() {
    var recipientViewURL = this.props.route.data.url;
    console.log('Recipient URL is: ' + recipientViewURL);
    return (
      <View style={styles.container}>
        <WebView
          source={{uri: recipientViewURL, method: 'GET'}}
          scalesPageToFit={true}
          javaScriptEnabled={true}
          domStorageEnabled={true}
          onNavigationStateChange={this.whenNavigationStateChanges.bind(this)}
        >
      </WebView>
      </View>
    );
  }

  whenNavigationStateChanges(navState){
    var navigator = this.props.navigator;
    var parsed = Url.parse(navState.url, true);
    if (parsed.hostname == 'YOUR_HOSTNAME'){
      console.log("Event is: " + parsed.query.event);
      navigator.pop();
    }
  }

答案 1 :(得分:0)