SDK 3.1: Wie kann ich feststellen, ob SDK iOS6-Accounts verwendet oder nicht?

8

Wenn ich ein Facebook-Konto in iOS6 eingerichtet habe, aber der Benutzer es ausgeschaltet hat, gibt mir das SDK nur einen FBSessionStateClosedLoginFailed-Status. Davon kann ich nicht sagen, ob der Benutzer uns in iOS ausgeschaltet hat (Fall 1) oder kein Konto in iOS eingerichtet hat und die Erlaubnis von der FB App oder Web App abgelehnt hat (Fall 2).

Die Fehlermeldungen, die ich präsentieren muss, sind in beiden Fällen sehr unterschiedlich. Im ersten Fall müssen wir dem Benutzer sagen, wie wir ihn wieder einschalten sollen, aber diese Anweisungen würden für jemanden in Fall 2 verwirrend sein.

Ich habe versucht, das iOS-Accounts-Framework zu verwenden, aber wenn ich ausgeschaltet bin, wird mir gesagt, dass es keine Facebook-Accounts gibt, selbst wenn es solche gibt. Ich habe auch versucht, die Konto-ID zu schreiben, wenn ich jemals erfolgreich authentifizieren, aber accountWithIdentifier schlägt ähnlich, wenn wir ausgeschaltet sind.

Kennt jemand einen Weg, um herauszufinden, ob unsere Ablehnung von iOS oder FB selbst kommt?

    
Michael McDaniel 03.10.2012, 15:52
quelle

3 Antworten

6

Die Richtlinie des SDK im Allgemeinen besagt, dass, wenn ein Vorgang gerade fehlschlägt, die zugrunde liegenden Fehlerinformationen vom Betriebssystem in die App übertragen werden. (Natürlich beginnen nicht alle Fehlerfälle mit einem Ausfall der Betriebssystem-API.) Der Grund für diese Richtlinie besteht darin, genauere Fehlerbehandlungs- und Protokollierungsszenarien wie die von Ihnen beschriebene zu unterstützen. Abgesehen davon, wenn Sie jemals einen Platz im SDK finden, der diesem Muster nicht folgt, ist es ein Fehler und melden Sie ihn bitte.

In diesem Fall übergibt FBSession ein NSError-Objekt an Ihren Handler und legt den FBErrorInnerErrorKey-Wert in der userInfo auf das Fehlerobjekt fest, das vom Betriebssystem zurückgegeben wird. Um Ihrem Benutzer eine präzise Fehlermeldung zu geben, können Sie in Ihrem FBSessionStateClosedLoginFailed-Fall ein Code-Snippet verwenden:

%Vor%

Hoffe, das hilft!

* UPDATE * Habe es auf einem Gerät versucht und zwei Fehler gefunden. eine in iOS 6.0 und die andere im SDK. Der Fehler iOS 6.0 ist, dass wenn der Schalter deaktiviert ist, kein NSError-Objekt von dem Betriebssystem übergeben wird, und so gibt es keinen inneren Fehler. Die generelle Lösung von oben funktioniert daher nicht für den konkreten Fall. Der zweite Fehler bietet Ihnen eine temporäre Lösung für dieses Problem mit dem SDK 3.1.1.

Der Fehler im SDK 3.1.1 besteht darin, dass wir error.userInfo [FBErrorLoginFailedReason] auf den Wert von FBErrorLoginFailedReason setzen. In dem Fall, in dem der innere Fehler NIL ist, können Sie aus diesem Grund überprüfen, ob der Schieberegler für die App deaktiviert wurde. Wenn dieser Fehler im SDK behoben wird, wird der Codetest für diesen Fall jedoch unterbrochen, da wir den Grund auf einen logischeren Grund für iOS 6 festlegen. Dies ist eine Frage, auf die in einem zukünftigen Build von Ihre Bewerbung, wenn Sie sich auf diesen Wert verlassen.

    
Jason Clark 04.10.2012 17:48
quelle
2

Mit iOS 6.0 und höher, wenn Sie auf das Einstellungsgerät zugreifen und die Facebook-Integration in Ihrer App deaktivieren. Sie können es anhand des Codes überprüfen

%Vor%     
Võ Huy Hưng 21.06.2013 10:19
quelle
-1

Wenn die Anmeldung fehlschlägt, können Sie versuchen, den alten Facebook-Anmeldedialog von webview zu öffnen, den iOS nicht ablehnen kann. Wenn das gelingt, dann haben sie kein iOS 6 oder sie haben dich in iOS 6 ausgeschaltet, von dem ich nicht wusste, dass es möglich ist.

    
Curtis 03.10.2012 22:45
quelle

Tags und Links