一般用 react-native link react-native-yunpeng-alipay 直接链接原生,如果链接不成功,就需要手动配置了。
以下拆分一下手动配置ios板块的步骤:
1. 双击打开react native一级项目下的ios/xxx.xcworkspace,将node_modules/react-native-yunpeng-alipay/ios下的AlipayModule.xcodeproj拖到你的XCode工程下的Libraries分组里。
(官方说明:如果该库包含原生代码,那么在它的文件夹下一定有一个.xcodeproj文件。把这个文件拖到你的XCode工程下(通常拖到XCode的Libraries分组里))
2. 在你刚才打开的主工程文件里,点击主工程文件,打开Targets,选择Build Phases,然后把刚才所添加进去的xxx.xcodeproj下的Products文件夹中的静态库文件(.a文件),拖到Link Binary With Libraries组内。
3. 同时要将以下的库,添加到Link Binary With Libraries里。
CoreMotion.framework
CoreTelephony.framework
libc++
libz
复制代码
4. 在Target/info/URL type增加URL Schema作为你APP去访问别人APP的唯一标志符(id)
对于需要嵌入签名文件才能接入的app来说(例如微信),URL Schema就是你去别人平台申请的签名文件字符串(作为访问的唯一标志)。
对于不需要嵌入签名文件的就能访问的app来说(例如支付宝),URL Schema8 可以 直接写你自己的包名。
反正,不管需不需要嵌入签名文件调用,你都不能将URL Schema写成被接入的那个app的identifier,因为URL Schema是让别人调用你一个标志符,如果你将URL Schema写成被接入的那个app的identifier,那么当接入完毕时可能无法回调,也可能,当被接入的app并未在你的手机上下载时,你的app无法唤起被接入app的网页端。
举例如下:
例如接入支付宝, 我们最开始将URL Schema也写成了alipay,导致我们在未安装支付宝APP的情况下,无法唤起支付宝的网页支付...sad,找了很久才发现是这个原因导致的。
5. 在主工程的AppDelegate.m,添加如下代码:
#import "AlipayModule.h"
复制代码
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
[AlipayModule handleCallback:url];
return YES;
}
复制代码
用法如下:
import Alipay from 'react-native-yunpeng-alipay';
Alipay.pay("支付的签名信息").then(function(data){
console.log(data);
}, function (err) {
console.log(err);
});
复制代码
差不多就完毕了。错误之处望指正。