Ich registriere eine Anwendung, die über URL geöffnet werden kann, und bin mit
verwechselt application:openURL:sourceApplication:annotation
Laut Dokumentation sollten Sie YES zurückgeben, wenn Sie die URL unterstützen und NEIN, wenn nicht. Was nützt das aber? Ich gebe NO zurück, wenn die URL fehlerhaft ist oder nicht unterstützt wird, aber die App immer noch geöffnet wird, als ob nichts schief gelaufen wäre. Wer hört auf diese BOOL
Rendite und was machen sie damit? Gibt es trotzdem, um zu verhindern, dass die App geöffnet wird, wenn die URL fehlerhaft ist oder nicht unterstützt wird?
Die Dokumentation besagt, dass Sie YES
zurückgeben, wenn Sie den URI erfolgreich geöffnet haben, und NO
, wenn Sie dies nicht getan haben. Beachten Sie, dass " erfolgreich war oder nicht geöffnet werden konnte " ist semantisch anders als " kann oder kann nicht öffnen ". Leider gibt es keine Möglichkeit, den Start der App zu verhindern. Wenn ein Schema registriert wird, wird es gestartet, unabhängig davon, ob der Rest des URI korrekt formatiert ist.
UIApplication hat zwei Methoden: canOpenURL:
und openURL:
. Der erste ONLY überprüft, ob das Schema unterstützt wird (nicht die vollständige URL), wobei letzterer die App startet und das Ergebnis des Anwendungsdelegaten zurückgibt.
Um Ihre Frage zu beantworten: Die andere App, die [[UIApplication sharedApplication] openURL:url]
aufruft, ist derjenige, der das Ergebnis Ihres Delegierten abhört
Tags und Links ios cocoa-touch uiapplicationdelegate