2012-04-03 10 views
1

Ich entwickelte eine Anwendung für iPhones mit monotouch und es gibt In-App-Kauf in es, ich habe diesen Code https://github.com/Clancey/ClanceyLib/blob/master/ClanceysLib/AppStore/InAppPurchaseManager.cs. Alles funktioniert gut. Ich kann kaufen und ich kann Antwort bekommen.In-App-Kauf stürzt in Monotouch ab ios

Aber manchmal bekomme ich Fehler und dann App stürzt ab. Zum Beispiel versuche ich 10 mal zu kaufen, indem ich die App schließe und wieder öffne. Ich bekomme diesen Fehler 2 mal. Der App Store lehnt meine Bewerbung deswegen ab.

Der Fehler ist: "Erhalte einen SIGSEGV während der Ausführung von systemeigenem Code. Dies weist normalerweise auf einen schwerwiegenden Fehler in der Mono-Laufzeitumgebung oder einer der nativen Bibliotheken hin, die von Ihrer Anwendung verwendet werden."

Bitte helfen Sie mir, wie ich es lösen kann.

BTW im in-App-Aufruf Kauf wie folgt:

InAppPurchaseManager obj_inapp=new InAppPurchaseManager(); 
if (obj_inapp.canMakeProUpgrade()) 
{ 
inapp.PurchaseProUpgrade(); 
} 

und wenn Sie ich brauche Protokolle zu senden, Monotouch und Xcode sind die neuesten Versionen ...

Diese Beispielanwendung ist: http://85.195.84.6/guessme/inapppurchaseproblem.zip

Grüße ...

Mit freundlichen Grüßen ...

+1

Veröffentlichen Sie Ihre Stacktrace, aus der Hand schwer das Problem zu sagen. Eine Sache zu versuchen ist, Ihren InAppPurchaseManager in einer Mitgliedsvariablen Ihrer Klasse zu speichern. Ich konnte sehen, wo der GC es mit Ihrem Codebeispiel oben sammeln konnte. – jonathanpeppers

+0

Dieser Crash-Protokoll ist: http://85.195.84.6/guessme/ipad.rar Diese Beispielanwendung ist: http://85.195.84.6/guessme/inapppurchaseproblem.zip Grüße ... – Jose

+0

Haben Sie das gefunden Lösung? Ich habe das gleiche Problem und bin gespannt wie ich es beheben kann. – StackFlower

Antwort

2

Haben Sie versucht, private InAppPurchaseManager inapp; als eine Mitgliedsvariable in der Klasse Ihres Controllers zu deklarieren?

Als eine lokale Variable könnte der GC ihn sammeln und Objective-C würde nicht mehr in der Lage sein, zu C# zurückzurufen, und ein Crash würde resultieren.