我正在使用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的通用答案会更好)。
答案 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)