Frage

Ich arbeite an einem benutzerdefinierten URL -Schema in einer App und versuche herauszufinden:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

Ich komme und an eine URL erfolgreich in ein Nsdictionary in meiner App, frage mich aber: "Was jetzt?" handleOpenURL Gibt einen Bool zurück, aber zu was? Es fällt mir schwer zu debuggen, da ich nicht herausgefunden habe, wie Debugger beim Brennen auf dem Gerät laufen können.

Ich weiß nur das ist das applicationDidFinishLaunching vorab handleOpenURL und es scheint, als ob mein rootViewController ist auf dem Bildschirm.

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Load data
    [self initializeData]; 
    // Configure and show the window
    [window addSubview:[navigationController view]];    
    [window makeKeyAndVisible];
}

Wie auch immer, jetzt habe ich dieses Nsdictionary -Objekt in meinem AppDelegate. Würde ich anrufen

[[navigationController topViewController] addItemWithDictionary:theDictionary];

Vor Handlungen return YES; Oder sollte ich in meinem AppDelegate eine Nsdictionary -Eigenschaft erstellen und dann nach "zurückgeben ja"; Rufen Sie es von meinem ab rootViewController (oder detailViewController - Ich habe noch nicht herausgearbeitet). Wenn ja, was ist der Auslöser? Mir ist nicht klar, wohin die Rückkehr von HandleOpenurl übergeht ... und was, wenn überhaupt, für mich haben sie.

Vielen Dank!

War es hilfreich?

Lösung 3

Ich glaube, ich habe vielleicht meine eigene Frage beantwortet, aber wenn Sie andere Ideen haben, würde ich sie gerne hören!

Ich denke, ich muss weiter in Handlungsopenurl verarbeiten und das Wörterbuch in ein Objekt verwandeln, das dann zu dem Array meines AppDelegate hinzugefügt wird, mit dem RootViewController seine Tabellenansicht erstellt. Müssen offensichtlich eine Validierung und Bestätigung des Benutzers erarbeiten, bevor das Array automatisch besiedelt wird. Ich denke, das würde auch innerhalb von Handlungen von Handlungen passieren?

Andere Tipps

Schauen Sie sich den Vorschlag hier zu didfinishlaunching mit

http://www.iphonedevsdk.com/forum/iphone-sdk-development/31742 Handleopenurl-not-called.html

Es gibt einige Ansätze, die ich verwendet habe, um Daten umzugeben, und abhängig von den Bedingungen mischen ich sie.

  1. Halten Sie eine Global in der Nähe, damit Sie sich keine Sorgen um das Bestehen machen müssen.

  2. Registrieren/veröffentlichen Sie Ihre Daten mit dem Beobachtermuster mit einem Benachrichtigungsobjekt mit dem Benachrichtigungsmeldungszentrum.

  3. Speichern Sie URLs in NsuserDefaults (auch ein Wörterbuch, aber Sie müssen es nicht verwalten).

Vor kurzem musste ich in einem UIWebview und der Handhabung der Filterung einiger URL -Daten etwas Ähnliches tun. Ich musste WebViewCache und setSharedCache auf dem NSURL unterklasseln. Ich vermute dringend, dass dies auch für Ihr Problem gelten würde, indem Sie die Daten abrufen, mit denen startLoadWitHrequest abgerufen werden würde.

Ein praktischer Tipp für das Debuggen von OpenUrl von anderen Apps oder mobilen Safari (Nicht -Jailbroken -Gerät) besteht darin, die UIAPPLICATIONS zu unterklassen und einige Methoden ohne Papiere zu überschreiben. Tut mir leid, dass ich mich nicht an Namen erinnere, aber Sie können sie bei Ericasadun.com ausgraben. offensichtlich.

Wenn Sie die App über Xcode starten und das Home Springboard drücken, tötet Sie den Vorgang nicht, da sie von Xcode (AFAIK) gestartet wurde, damit Sie andere Apps starten und Openurl anrufen können, während Sie dennoch an den Debugger angeschlossen sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top