我有一个带有com.paypal.cordova.mobilesdk v3.5.0的移动应用
在iOS中创建付款时出现以下错误。
还请注意,当应用程序不处于调试模式时,它会崩溃并立即关闭。
2018-09-02 20:48:29.853486+0200 MyHurryApp[631:122102] -[NSNull length]: unrecognized selector sent to instance 0x1b69ef878
2018-09-02 20:48:29.856680+0200 MyHurryApp[631:122102] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x1b69ef878'
*** First throw call stack:
(0x1843bad8c 0x1835745ec 0x1843c8098 0x1843c05c8 0x1842a641c 0x102ad75e8 0x1028c1c20 0x1033211dc 0x10332119c 0x103325d2c 0x184363070 0x184360bc8 0x184280da8 0x186266020 0x18e2a0758 0x1028beb90 0x183d11fc0)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
导致此崩溃的行似乎是:
[PayPalMobile preconnectWithEnvironment:environmentToUse];
``` -(void)prepareToRender:(CDVInvokedUrlCommand *)命令{ [self.commandDelegate runInBackground:^ { CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK]; NSString * environment = [command.arguments objectAtIndex:0];
NSString *environmentToUse = [self parseEnvironment:environment];
if (environmentToUse) {
// save configuration
PayPalConfiguration *configuration = [self getPayPalConfigurationFromDictionary:[command.arguments objectAtIndex:1]];
self.configuration = configuration;
// do preconnect
dispatch_async(dispatch_get_main_queue(), ^{
[PayPalMobile preconnectWithEnvironment:environmentToUse];
});
} else {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"The provided environment is not supported"];
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}]; } ```
在其他论坛上,我看到了一些建议,您应该将付款金额转换为字符串,但是我这样做了,但是问题仍然存在。 Click here for example
还有其他建议吗?
答案 0 :(得分:1)
重要提示:PayPal Mobile SDK现在已弃用,仅支持现有集成。对于所有新集成,在受支持的国家/地区使用Braintree Direct。在其他国家/地区,请使用Express Checkout并选择Braintree SDK集成选项。
paypal developer page上也会显示相同的警告。
所以我想您的应用程序在此崩溃:
[PayPalMobile preconnectWithEnvironment:environmentToUse];
位置,因为您正尝试连接到不再受支持的新环境。
大多数应用程序现在都使用应用程序内浏览器来实现PayPal结帐。