Ich schreibe gerade eine iOS-App, die Google Nearby API verwendet. Mir ist aufgefallen, dass manchmal, wenn ein Gerät ein Abonnement startet und Publikationen von einem anderen Gerät in der Nähe (beide iOS-Geräte) annimmt, das abonnierte Gerät Veröffentlichungen von dem anderen Gerät erhält (von früheren Läufen des anderen Geräts, die offensichtlich veröffentlicht wurden) von meiner App). Ich sende UUIDs bei der Veröffentlichung und ich sehe definitiv alte UUIDs (d. H. Frühere Läufe), die der Abonnent erhalten hat.
Ich stieß auf https://stackoverflow.com/a/32540735, die erklärt, dass "Sitzungen" in 10 Minuten Eimer unterteilt sind, die dieses Problem erklären könnten, jedoch scheint die Antwort nur mit Android verwandt zu sein. Mir ist aufgefallen, dass das iOS in der Nähe noch in der Beta ist, könnte das ein Bug sein?In der Nähe veröffentlichte Veröffentlichungen, die noch auf iOS-Geräten empfangen wurden
Irgendwelche Ideen? Vielen Dank.
Das Problem verschwindet nach ein paar Minuten. Es reicht also nicht aus, die Veröffentlichung auf null zu setzen, sondern es muss genug Zeit für die Benachrichtigung des Servers bleiben, was nicht möglich ist, wenn der Benutzer die App tötet oder in den Hintergrund stellt, richtig? – Urilicious
Es sollte in der Lage sein, den Server erfolgreich zu starten, wenn die App in den Hintergrund geschoben wird (wir verwenden [UIApplication -beginBackgroundTaskWithExpirationHandler:] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/ # // apple_ref/occ/instm/UIApplication/beginBackgroundTaskWithExpirationHandler :) um sicherzustellen, dass es lange genug läuft). Aber wenn es getötet wird, während die Veröffentlichung aktiv ist, können wir nichts tun. Können Sie sicherstellen, dass es keinen weiteren Verweis auf das Publikationsobjekt gibt? –
Ich glaube schon. In meinem AppDelegate.applicationDidEnterBackground setze ich alle Publisher, Subscriber und sogar den GNEMessageManager auf Null, damit es keine GNS-Aktivität im Hintergrund gibt (dies geschieht, um den Tipps zu folgen, die im Video [hier] angegeben sind (https: //www.youtube.com/watch?v=hultDpBS22s), die auf einem Android onPause die Veröffentlichung aufheben oder abmelden. Mein Debugging zeigt auch, dass mein Publisher zu diesem Zeitpunkt null ist. – Urilicious