У меня есть приложение, которое выпущено, и покупка в приложении, похоже, работает в случаях, когда пользователи купили, но я замечаю на Crashlytics (fabric), что приложение продолжает сбой, и я не могу фигурировать почему я не могу реплицировать сбой на любом устройстве. Это моя первая интеграция покупок в приложении, так что несите меня.Быстрые сбои при покупке приложений
Я не могу понять, в чем проблема, тем более что на конкретном устройстве нет рисунка, а иногда и работает, а иногда нет (по-видимому). Я понимаю, что это может иметь несколько причин, но толчок в правильном направлении будет большим. Вот журнал аварии
Thread : Crashed: com.apple.main-thread
0 app 0xc2658 WelcomeViewController.purchaseAlert() ->() (WelcomeViewController.swift)
1 app 0xc2658 WelcomeViewController.purchaseAlert() ->() (WelcomeViewController.swift)
2 app 0xc1148 @objc WelcomeViewController.removeAdsTapped(UIButton) ->() (WelcomeViewController.swift:164)
3 UIKit 0x29691771 -[UIApplication sendAction:to:from:forEvent:] + 80
4 UIKit 0x29691701 -[UIControl sendAction:to:forEvent:] + 64
5 UIKit 0x2967961f -[UIControl _sendActionsForEvents:withEvent:] + 446
6 UIKit 0x29691051 -[UIControl touchesEnded:withEvent:] + 616
7 UIKit 0x29690cbf -[UIWindow _sendTouchesForEvent:] + 646
8 UIKit 0x296895d7 -[UIWindow sendEvent:] + 642
9 UIKit 0x2965a119 -[UIApplication sendEvent:] + 204
10 UIKit 0x29658757 _UIApplicationHandleEventQueue + 5134
11 CoreFoundation 0x25485257 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
12 CoreFoundation 0x25484e47 __CFRunLoopDoSources0 + 454
13 CoreFoundation 0x254831af __CFRunLoopRun + 806
14 CoreFoundation 0x253d5bb9 CFRunLoopRunSpecific + 516
15 CoreFoundation 0x253d59ad CFRunLoopRunInMode + 108
16 GraphicsServices 0x2664faf9 GSEventRunModal + 160
17 UIKit 0x296c1fb5 UIApplicationMain + 144
18 app 0xbaba4 main (AppDelegate.swift:15)
19 libdispatch.dylib 0x25088873 (Missing)
Все, что я не хватает?
Edit:
Это то, что вызывается, когда пользователь нажимает на кнопку удалить объявления
func purchaseAlert() {
let priceFormatter: NSNumberFormatter = {
let pf = NSNumberFormatter()
pf.formatterBehavior = .Behavior10_4
pf.numberStyle = .CurrencyStyle
return pf
}()
priceFormatter.locale = storeProducts.first!.priceLocale
let productPrice = storeProducts.first!.price
let price = priceFormatter.stringFromNumber(productPrice)!
let alert = UIAlertController(title: "Remove Ads for \(price)", message: "This purchase will remove all ad's that show through out the app", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Go Back", style: .Default, handler: nil))
alert.addAction(UIAlertAction(title: "Remove Ad's", style: .Default, handler: { (_) -> Void in
self.removeADs()
}))
self.presentViewController(alert, animated: true, completion: nil)
}
Приобретение продукта
func removeADs() {
let product = storeProducts.first
Purchasables.store.purchaseProduct(product!)
}
Это предполагает, что всегда будет продукт, и должно быть.
Update: Я обновил приложение и ждали больше, чем на неделю, чтобы получить какие-то данные и получается, что пользователи по-прежнему не в состоянии купить. Теперь я безопасно разворачиваю все опции, поэтому нет никаких значений nil, поэтому никаких сбоев не приводит к сбоям, но я отслеживаю нажатия на кнопку удаления , и я замечаю, что я получаю что-то вроде этого (20 точек, 10 пользователей), что указывает на то, что пользователи продолжают нажимать снова и снова и не получают никаких покупок. Я также отслеживал, есть ли продукт, возвращенный из магазина, и 97% времени. Я все еще не могу указать проблему, и кнопки на кнопке определенно не случайны, так как кнопка удаления объявлений в значительной степени не работает. Я все еще получаю некоторые покупки, но большинство терпит неудачу.
Может ли вы опубликовать некоторые из соответствующих бит вашей в приложении покупке коды. Трудно сказать вам, просто глядя на эту ошибку – crashoverride777
Конечно, я добавил еще код. Меня смущает то, что некоторые пользователи могут совершать покупки, а большинство - нет. Я пробовал разные магазины разных устройств и до сих пор не смог воспроизвести проблему. –
argh его трудно для меня, чтобы помочь, потому что вы не можете реплицировать проблему, таким образом, вы не получите сообщений об ошибках, чтобы увидеть, что происходит. Его разочарование я знаю, у меня тоже есть проблема с моей игрой, где у меня появляется ошибка, которую команда проверки яблок говорит мне о том, что я не могу, чтобы моя жизнь повторялась. – crashoverride777