Skip to content

unionpay 和 支付宝冲突  #4

@WilongChen

Description

@WilongChen

所有的外链APP回掉都会走 RCTOpenURLNotification 这个通知,而在CFBundleURLTypes 你无法判断CFBundleURLName 具体是在 CFBundleURLTypes 里第几个位置 建议改成支付宝的判断方法 做如下修改
NSArray *urlTypes = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleURLTypes"];
for (NSDictionary *item in urlTypes) {
NSString *name = item[@"CFBundleURLName"];
if ([name isEqualToString:@"upay"]) {
NSArray *schemes = item[@"CFBundleURLSchemes"];
if (schemes.count > 0)
{
self.schemeStr = schemes[0];
break;
}
}
}
否则

NSArray *urlTypes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"];
NSArray *urlSchemes = [[urlTypes objectAtIndex:3] objectForKey:@"CFBundleURLSchemes"];
if(urlSchemes.count > 0) {
    self.schemeStr = [urlSchemes firstObject];
}

这个方法无论哪个在firstObject 你都会取到 CFBundleURLSchemes 它不一定是unionpay 而 canOpen = [aURLString hasPrefix:scheme]; 返回YES
[body setObject:code forKey:@"code"];
[self sendEventWithName:@"UnionPay_Resp" body: body];
这里可能会导致崩溃

当然 你也可以把 他放进 if(data != nil) { } 这样更安全

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions