iOS 9 - Die NSUserActivity-Benutzerinfo-Eigenschaft zeigt null an

8

Ich hatte eine kurze Frage zu der userInfo-Eigenschaft von NSUserActivity.

%Vor%

Ich habe das obige Snippet in einem der View-Controller viewDidLoad () implementiert. Wenn mein Element in der Spotlight-Suche angezeigt wird, ruft es die Delegate-Methode continueUserActivity auf.

Ich versuche, auf die userActivity.userInfo-Eigenschaft zuzugreifen, aber sie gibt null zurück, obwohl sie oben festgelegt wurde.

Hier ist das continueUserActivity-Snippet:

%Vor%

}

EDIT: Ich habe das location-Objekt so geändert, dass es als primitiver Typ zurückgegeben wird, aber ich bekomme immer noch null für die Delegate-Methode.

Hat jemand anderes dieses Problem in iOS 9 Beta 3?

    
Jason Ngo 09.07.2015, 20:54
quelle

6 Antworten

9

Ich arbeite in iOS 9 Beta 5, und eine andere Möglichkeit, dass userInfo in der application:continueUserActivity:restorationHandler: Null sein kann, ist, wenn Sie auch NSUserActivity s webPageURL Eigenschaft gesetzt haben. Wenn Sie die Eigenschaft webPageURL setzen und möchten, dass userInfo nicht null ist, müssen Sie die entsprechenden Schlüssel in die NSUserActivity -Eigenschaft von requiredUserInfoKeys einfügen. Das hat mich für immer genommen, um herauszufinden, aber Schande über mich, weil ich das in den Dokumenten verpasst habe.

%Vor%     
markckim 28.08.2015, 01:01
quelle
2

Hallo, könnten Sie Ihr continueUserActivity-Snippet einchecken:

%Vor%

Wenn es nicht dorthin geht, gehe ich davon aus, dass Core Spotlight in Ihrer App integriert ist und Sie Spotlight genau durch diese Elemente von Core Spotlight erhalten.

Ich hoffe, es war hilfreich.

P.S. Im Moment ( Xcode 7 beta 3 ) können viele Entwickler die Such-API nicht über NSUserActivity erreichen, einschließlich mir.

    
Richard Mazkewich 15.07.2015 11:04
quelle
0

Es war ein Problem mit Beta 3, das diesen Fehler verursachte. Ab Beta 5 funktioniert alles.

    
Jason Ngo 11.08.2015 14:36
quelle
0

Siehe diese Frage: NSUserActivity-Handoff funktioniert nicht für benutzerdefinierte Daten

>

userInfo ist nicht null, wenn Sie dieser Richtlinie von Apple folgen:

  

Um das userInfo-Dictionary des Aktivitätsobjekts effizient zu aktualisieren, konfigurieren Sie seinen Delegaten und legen Sie die Eigenschaft needsSave auf YES, wenn die userInfo aktualisiert werden muss. Zu geeigneten Zeiten ruft Handoff den Benutzer activityWillSave des Delegates auf: callback, und der Delegat kann den Aktivitätsstatus aktualisieren.

Das Dokument sagt, dass das Setzen von webpageURL erfordert, dass requiredUserInfoKeys auch gesetzt werden. Allerdings funktioniert (a) die Handoff-Funktion ohne requiredUserInfoKeys, solange 'userActivityWillSave' userInfo setzt und (b) webURL ein iOS 8-Parameter ist, während requiredUserInfoKeys iOS 9 ist. Die Delegate-Methode ermöglicht also die Übergabe in iOS 8 zu unterstützen. Xcode 6.

    
Richard 04.09.2015 23:39
quelle
0

Ich bemerkte (im Simulator), dass Sie entweder:

setzen können
  • Webseiten-URL
  • userInfo und requiredUserInfoKeys

Aber nicht beides! Wenn Sie sowohl webpageURL als auch userInfo mit requiredUserInfoKeys festlegen, wird Ihre Aktivität unter iOS nicht angezeigt. Ich denke, das liegt daran, dass Apple davon ausgeht, wenn Sie die Webseiten-URL so einstellen, dass Sie universelle Links unterstützen und somit keine zusätzlichen Benutzerinformationen benötigen.

Es ist jedoch in Ordnung, sowohl die Webseite als auch nur userInfo festzulegen, aber in Ihrem App-Delegaten erhalten Sie nicht die userInfo.

    
edwardmp 10.10.2015 17:21
quelle
0

Ich hatte das gleiche Problem, dass UserInfo Null war (auf iOS 9.2). Das Problem war, dass das Suchergebnis nicht die letzte NSUserActivity war, die ich angetippt habe (älteres ohne UserInfo). Also habe ich den Titel umbenannt, um das korrekte Suchergebnis eindeutig zu identifizieren.

Vielleicht hilft das auch jemandem.

    
Fabian 02.03.2016 12:12
quelle

Tags und Links