it-swarm.com.de

Auf iOS 11 kann kein Tweet mit TwitterKit gesendet werden

Ich versuche, das TwitterKit zum Erstellen eines Tweets über die bereitgestellte TWTRComposer-Klasse zu verwenden. Dies ist die Funktion, die ich anrufe:

-(void) Tweet:(UIViewController *) root {
    TWTRComposer *composer = [[TWTRComposer alloc] init];

    [composer setText:@"just setting up my Twitter Kit"];

    // Called from a UIViewController
    [composer showFromViewController:root completion:^(TWTRComposerResult result) {
        if (result == TWTRComposerResultCancelled) {
            NSLog(@"Tweet composition cancelled");
        }
        else {
            NSLog(@"Sending Tweet!");
        }
    }];
}

Hier gibt es zwei Probleme:

  1. Wenn die Twitter-App auf meinem Gerät installiert ist, wird das TWTRComposer-Dialogfeld angezeigt. Kurz darauf wird eine weitere Warnmeldung angezeigt, die den Titel " Kein Twitter-Konto " und die folgende Meldung enthält: " Es sind keine Twitter-Konten konfiguriert. Sie können in den Einstellungen einen Twitter-Account hinzufügen oder erstellen. " Ich kann dieses Dialogfeld schließen und dann den Tweet (erfolgreich) senden, aber dies ist offensichtlich eine sehr schlechte UX. Dieser Fehlerdialog ist auch seltsam, da iOS 11 in den Einstellungen kein Twitter mehr hat.
  2. Wenn die Twitter-App nicht auf meinem Gerät installiert ist, wird der TWTRComposer-Dialog überhaupt nicht angezeigt. Stattdessen wird der Beendigungsblock in der showFromViewController-Methode sofort mit einem Ergebnis des Typs TWTRComposerResultCancelled aufgerufen.

Ich habe das Gefühl, dass dies irgendwie mit Login-Problemen bei Twitter zusammenhängt. Die App, an der ich arbeite, enthält keine Registrierung/Anmeldung bei Twitter. Ich hatte jedoch den Eindruck, dass der TWTRComposer die gesamte Anmeldung übernimmt.

Jede Hilfe wird wirklich geschätzt, und vielen Dank für das Lesen!

8
Miki P

Sie haben Recht: Aufgrund der Änderungen in iOS 11 müssen Sie sich anmelden, bevor Sie TWTRComposer aufrufen.

iOS 11 unterstützt Twitter nicht mehr über das integrierte soziale Rahmenwerk. Stattdessen können Sie Twitter Kit 3 verwenden, um zu twittern, Benutzer anzumelden und die Twitter-API zu verwenden. Die folgende Anleitung zeigt, wie Sie Ihren alten Code migrieren.

Melden Sie sich an (mit der folgenden Reihenfolge, falls möglich, Twitter für iOS/SFSafariViewController/UIWebView. Überprüfen Sie Voraussetzungen ) und erstellen Sie dann:

ObjC:

// Check if current session has users logged in
if ([[Twitter sharedInstance].sessionStore hasLoggedInUsers]) {
    TWTRComposerViewController *composer = [TWTRComposerViewController emptyComposer];
    [fromController presentViewController:composer animated:YES completion:nil];
} else {
    [[Twitter sharedInstance] logInWithCompletion:^(TWTRSession *session, NSError *error) {
        if (session) {
            TWTRComposerViewController *composer = [TWTRComposerViewController emptyComposer];
            [fromController presentViewController:composer animated:YES completion:nil];
        } else {
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"No Twitter Accounts Available" message:@"You must log in before presenting a composer." preferredStyle:UIAlertControllerStyleAlert];
            [self presentViewController:alert animated:YES completion:nil];
        }
    }];
}

Schnell:

if Twitter.sharedInstance().sessionStore.hasLoggedInUsers() {
    // App must have at least one logged-in user to compose a Tweet
    let composer = TWTRComposerViewController.emptyComposer()
    present(composer, animated: true, completion: nil)
} else {
    // Log in, and then check again
    Twitter.sharedInstance().logIn { session, error in
        if session != nil { // Log in succeeded
            let composer = TWTRComposerViewController.emptyComposer()
            self.present(composer, animated: true, completion: nil)
        } else {
            let alert = UIAlertController(title: "No Twitter Accounts Available", message: "You must log in before presenting a composer.", preferredStyle: .alert)
            self.present(alert, animated: false, completion: nil)
        }
    }
}

Dokumente:

7
nathan

Ab dem 12. Juni 2018 ist die Rückrufsperre nicht mehr optional. Das richtige Rückrufformat für iOS-Apps lautet:

twitterkit-MY_CONSUMER_KEY://

https://developer.Twitter.com/de/docs/basics/callback_url.html

0
shahil