【发布时间】:2013-11-25 09:17:21
【问题描述】:
我们的应用内购买流程目前正面临一个非常烦人的严重随机崩溃。
随机,因为只有部分客户会遇到此问题。
在 ios7 发布时突然出现崩溃(在 ios7 RTM 之前,没有收到崩溃报告)。所以我们假设它与 StoreKit 行为的变化有关。
我们调用事务的时候好像有问题。OriginalTransaction
其他 Xamarin 用户是否面临同样的问题?
搜索 Xamarin 论坛/谷歌等,我们发现我们的问题可能与我们在这里找到的这个错误有关 https://bugzilla.xamarin.com/show_bug.cgi?id=2871#c13
有人找到解决这个随机错误的方法了吗?
更一般地说(不涉及 Xamarin/Monotouch),是否有人面临 ios7 和 storekit 的类似问题?
我们正在使用:
- Xamarin Studio 4.2.1(内部版本 1)
- Xamarin.iOS 7.0.4.209
- 单声道 3.2.4
- Xcode 4.6.3
这是我们的 UpdatedTransactions 方法的代码:
public override void UpdatedTransactions(SKPaymentQueue queue, SKPaymentTransaction[] transactions)
{
List<SKPaymentTransaction> chartTransactions = new List<SKPaymentTransaction>();
foreach (SKPaymentTransaction transaction in transactions)
{
string productId = transaction.TransactionState == SKPaymentTransactionState.Restored ? transaction.OriginalTransaction.Payment.ProductIdentifier : transaction.Payment.ProductIdentifier;
if (string.IsNullOrEmpty(_ProductIdPrefix) == false && productId.StartsWith(_ProductIdPrefix, true, CultureInfo.InvariantCulture))
{
chartTransactions.Add(transaction);
}
}
_PaymentTransactionChangedCallback(chartTransactions.ToArray());
}
这是重新符号化的崩溃日志(我们用相同的调用堆栈重新符号化了许多客户的崩溃日志):
...
(not re-symbolized)
...
mono_handle_native_sigsegv (in OurAppMono) (mini-exceptions.c:2325)
sigabrt_signal_handler (in OurAppMono) (mini-posix.c:196)
...
(not re-symbolized)
...
monotouch_unhandled_exception_handler (in OurAppMono) (monotouch-glue.m:1440)
mono_invoke_unhandled_exception_hook (in OurAppMono) (mini-exceptions.c:2561)
mono_thread_abort (in OurAppMono) (mini.c:2629)
mono_handle_exception_internal (in OurAppMono) + 2136
mono_handle_exception (in OurAppMono) (mini-exceptions.c:1902)
handle_signal_exception (in OurAppMono) (exceptions-arm.c:559)
wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr (in OurAppMono) + 196
mono_jit_runtime_invoke (in OurAppMono) (mini.c:5793)
mono_runtime_invoke (in OurAppMono) (object.c:2790)
native_to_managed_trampoline_OurApp_ChartsServer_IOSChartPaymentObserver_UpdatedTransactions (in OurAppMono) (<stdin>:1214)
...
(not re-symbolized)
...
wrapper_managed_to_native_MonoTouch_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr (in OurAppMono) + 236
OurAppMono_Application_Main_string__ (in OurAppMono) + 164
wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr (in OurAppMono) + 196
mono_jit_runtime_invoke (in OurAppMono) (mini.c:5793)
mono_runtime_invoke (in OurAppMono) (object.c:2790)
mono_runtime_exec_main (in OurAppMono) (object.c:3972)
mono_runtime_run_main (in OurAppMono) (object.c:3602)
mono_jit_exec (in OurAppMono) (driver.c:1125)
main (in OurAppMono) (main.m:482)
编辑:
崩溃似乎与 ios7 有关。 (与 Xamarin 无关)。
解决方案是处理AppStore返回的(productid = nil),并完成匹配交易。
参考:
【问题讨论】:
标签: xamarin.ios crash ios7 xamarin storekit