2012-04-08 6 views
2

Ich habe zwei iPhone-Apps, die ich erstellt habe, die ihre eigenen benutzerdefinierten URLs haben und sich im App Store befinden. Lassen Sie uns sie App A und App B nennen.Bereitstellen einer Failover-URL, wenn ein benutzerdefiniertes URL-Schema nicht behandelt werden kann

App A-Schnittstelle ist eine UIWebView, die Markup von einem Remote-Server erhält, die ich ausführen. Das Verhalten, das ich in App A implementieren möchten, ist dies:

  • Wenn ein Link mit der benutzerdefinierten URL für App B und App B auf dem Gerät, offene App B. installiert erzeugt wird, wird dies leicht geschehen durch Überprüfung UIApplication canOpenURL: und, wenn es YES zurückgibt, UIApplication openURL:.

  • Wenn ein Link mit der benutzerdefinierten URL für App B und App B erzeugt wird, wird nicht auf dem Gerät installiert ist, gehen Sie auf die App-Store-Seite für App B.

Hier ist, wie ich plane, zum Umgang mit der zweiten:

  • einen URL-Parameter in der benutzerdefinierten URL enthalten, die den Link zum App Store-Seite für App B. enthält Wenn canOpenURL: kehrt NO für die gesamte URL, öffnen Sie die von diesem Parameter angegebene URL statt .

Das sollte funktionieren. Aber es fühlt sich ein bisschen hacky an, weil es bedeutet, dass App A wissen muss, wie man die benutzerdefinierte URL für App B analysiert, um den alternativen Link zu erhalten. Dies scheint eine weniger als ideale Verkapselung zu sein. Gibt es eine andere Konvention, die ich verwenden sollte, um die Failover-URL bereitzustellen, wenn canOpenURL:NO zurückgibt?

Antwort

1

Werden Sie diese URLs für AppB immer in AppA öffnen?

Wenn ja, warum müssen Sie den Link zur App Store-Seite für AppB in der URL hinzufügen?

Warum kann AppA die App Store-URL für AppB nicht bereits "kennen", und wenn "canOpenURL" NEIN für das benutzerdefinierte URL-Schema zurückgibt, sendet es den Benutzer einfach an diese App Store-Seite?

Dies scheint wie eine viel sauberere Lösung.

PS: Ich weiß, das ist eine alte Frage, aber die Frage hat ein paar upvotes, und wurde nicht beantwortet, also vielleicht wird dies jemandem helfen ...