Unsere Apps sind im App Store verfügbar. Ich möchte Abstürze von wenig Speicher erkennen, die manche Benutzer bekommen. Ich verstehe, dass es keinen Weg gibt, 100% einen Speichermangel zu erkennen. Gibt es eine Möglichkeit, diese Abstürze zu erkennen (mit einer ziemlich großen Wahrscheinlichkeit), indem Sie eine gewisse Logik in applicationDidReceiveMemoryWarning ausführen? (Ich spreche nicht über die Suche in xcode während der Entwicklungszeit, ich spreche über Code, der den Speichermangel von den tatsächlichen Benutzern erkennen wird und etwas in die Datei protokolliert)
Während ich nach einem Dienst oder einer Bibliothek gesucht habe, die mir OOM-Tracking geben, konnte ich diesen Artikel nur von Facebook Engineering finden:
Die Idee besteht darin, den Grund für den Start der App abzuleiten, verschiedene Aspekte zu überprüfen (wie wenn die App im Hintergrund war, ob es ein App / OS-Update gibt, ...).
Wenn Sie alle anderen möglichen Gründe verwerfen, die den vorherigen App-Exit erzwingen können, können Sie wissen, ob der Grund ein Hintergrund nicht genügend Speicher oder ein Vordergrund ist.
Es wäre schön, eine Bibliothek zu haben, die das Facebook-Verfahren implementiert. Aber heutzutage konnte ich keine finden, wahrscheinlich gibt es einen Grund, der es schwierig macht oder vielleicht unmöglich, es als SDK hinzuzufügen.
Wenn jemand einen Service kennt, teilen Sie ihn bitte mit jedem mit einem Kommentar oder einer neuen Antwort.
Bearbeiten:
Ich habe diesen GitHub ( Ссылка ) mit einer Implementierung des Facebook-Post-Verfahrens entdeckt. Ich habe es noch nicht versucht, aber wir werden es in unseren Apps einsetzen, um es auszuprobieren.
Achten Sie in Ihrem App-Delegaten auf die Nachricht applicationWillTerminate
. Dies wird aufgerufen, wenn Ihre App vom System beendet wird (z. B. wegen zu wenig Speicherplatz), aber nicht, wenn der Benutzer die App auf die übliche Weise durch Drücken der Home-Taste verlässt. Hinweis: Wenn Ihre App im Hintergrund ausgeführt wird und der Arbeitsspeicher erschöpft ist, wird Ihre App gelöscht, ohne dass Nachrichten an sie gesendet werden.
YMMV, vor allem mit älteren Versionen von iOS, und es lohnt sich zu recherchieren, um sicherzustellen, dass das obige genau ist.
Die Bilder im Blogpost sind ziemlich informativ (obwohl etwas veraltet).
Weitere Informationen finden Sie unter Wie erkennt man, ob die App vom Benutzer oder iOS beendet wurde (nach 10 Minuten Hintergrund)
Es gibt gute Bibliotheken von Drittanbietern, die die Leistung Ihrer iOS-Anwendung in Echtzeit verfolgen können. Unter 2 sind solche Kategorien bekannt:
Sie verfolgen und senden die Absturzberichte von den Geräten der Benutzer an Ihr Konto. Sie benachrichtigen Sie hoffentlich auch über Abstürze wegen zu wenig Speicher!
Ich hoffe, das könnte Ihr Problem bis zu einem gewissen Grad lösen.
Analysieren Sie zunächst Ihre Anwendung, indem Sie auf das Produkt in der oberen Menüleiste Ihres Xcode klicken und dann auf Analysieren klicken. Dort wird die Anzahl der in der Anwendung vorhandenen Lecks angezeigt und Sie können zu der Stelle gelangen, an der Lecks aufgetreten sind. So können Sie das Speicherleck finden und beheben. Zweitens hat es oben nicht funktioniert, dann sehen Sie auf den View-Controller, wo der Absturz aufgetreten ist und prüfen Sie, ob Sie ein Objekt zur Freigabe freigegeben haben. Ich hoffe, dies könnte Ihnen helfen, Ihr Problem zu lösen.