Ich verwende TWTweetComposeViewController, wenn verfügbar, um Tweets aus meiner iOS App zu senden. Ich befülle den View-Controller mit Textbausteinen und lasse ihn dann nach eigenem Ermessen ändern und senden. Es funktioniert größtenteils gut. Heruntergebrannt, sieht es so aus (mit body
zeigt auf eine gültige NSString
):
Nun, wenn body
zu lang ist, dh mehr als 140 Zeichen, ist die resultierende Tweet-Ansicht überhaupt leer, Zeichen Countdown auf 140 gesetzt. In diesem Fall hätte ich eine Kürzung erwartet, obwohl dies nicht der Fall ist scheinen in der Klassenreferenz in der einen oder anderen Weise dokumentiert zu sein, was passiert, wenn der anfängliche Text zu lang ist, aber ich akzeptiere, dass ich die Kürzung auf die maximale Tweet-Länge tun muss, bevor ich an setInitialText
übergebe.
Was ich nicht verstehe, ist, dass bestimmte Nachrichten, deren kürzer als 140 Zeichen sind, auch die leere Tweet-Ansicht erzeugen.
Zuerst habe ich eine scheinbar gültige Zeichenkette mit 139 fehlgeschlagenen Zeichen gesehen. Ich bemerkte, dass das Verkürzen der Saite es funktionierte. Aber nach vielen Experimenten bemerkte ich auch, dass das Ersetzen einer URL, die innerhalb des Textes mit zufälligem Text derselben Länge erschien, es funktionierte. Mit anderen Worten, die URL selbst verursacht ein Problem.
Ich dachte also vielleicht, dass die URL, die ich benutzt habe, etwas Seltsames ist, aber ich habe es auf diese Weise destilliert. Dieser funktioniert:
%Vor%, während dies nicht
ist %Vor%Beobachtungen:
[body length]
). Der einzige Unterschied besteht darin, dass in der Mitte der zweiten URL etwas ähnlich URL eingebettet ist. Ich habe genau das gleiche Problem gefunden. Es ist ein bekannter Fehler im Twitter-Framework und wird verfolgt.
Bitte sehen Sie sich diese Diskussion auf dev.twitter.com Ссылка
an(Ich hätte das als Kommentar und nicht als Antwort geschrieben, wenn ich könnte, aber ich habe nicht genügend SO-Glaubwürdigkeit, also dachte ich, ich würde die untenstehenden Beobachtungen hinzufügen, falls sie von Interesse sind).
Beim Hinzufügen von Text ohne URL funktioniert die Anzahl der Zeichen wie erwartet. Das Hinzufügen einer URL mit der addURL: -Methode führt dazu, dass 21 Zeichen des Tweets verwendet werden (20 für die URL plus ein Leerzeichen). Durch Hinzufügen der URL im ursprünglichen Text werden 20 Zeichen für die URL verwendet. Wenn eine einzelne URL (unter Verwendung einer der beiden Methoden) eingeschlossen wird, schlägt das Framework fehl, wenn die Gesamtzahl der Zeichen 138 überschreitet (z. B. 20 für URL + Leerzeichen + 117 Zeichen des ursprünglichen Texts), wodurch 2 Zeichen verloren gehen. Bei nur einer URL ist die Reihenfolge, in der der Anfangstext festgelegt und dann die URL mit addURL hinzugefügt wird, nicht von Bedeutung.
Beim Hinzufügen von 2 URls schlägt es fehl, wenn die Gesamtanzahl der Zeichen 113 überschreitet und 27 Zeichen verloren gehen! Wenn Sie jedoch 2 oder mehr hinzufügen und die URLs BEFORE hinzufügen, wird der erste Text mit einer Gesamtzahl von 136 fehlgeschlagen. So gehen 2 Zeichen pro URL verloren.
Zusammenfassung / Workaround - wenn Sie nur 1 URL hinzufügen und dann im ursprünglichen Text hinzufügen, erhalten Sie ein zusätzliches Zeichen als die addURL: -Methode, aber Sie werden immer noch 2 kurze Zeichen haben. Wenn du 2 oder mehr URLs mit addURL hinzufügst: füge sie vor dem ursprünglichen Text hinzu, aber bis der Fehler behoben ist, wirst du immer noch 2 Zeichen pro URL verlieren.
Ich habe ein Radar, aber nach diesem Kann ich durchsuchen die Fehlerberichte anderer Leute (Apple)? , je öfter ein Fehler gemeldet wird, desto höher ist die Priorität, die er erhält, also lohnt es sich auch andere, ihn zu archivieren, um seine Priorität zu erhöhen.
Das scheint ein Fehler zu sein; Ich wünschte, es gäbe eine Möglichkeit, TWTweetComposeViewController direkt zu fragen, wie viel Platz noch übrig ist. Zum Glück gibt es einen indirekten Weg zu fragen. setInitialText:
gibt NO
zurück, wenn die Nachricht zu lang ist, also habe ich es mit roher Gewalt ausgeführt, indem ich fünf Zeichen auf einmal abschneide, bis YES
zurückgegeben wird:
Ich weiß, es ist hässlich, oder? Aber zumindest erlaubt es mir, eine vernünftige Annäherung der maximalen Länge zu erhalten, so dass ich nicht mehr den Linktitel abschneide, als ich brauche.
Tags und Links ios twitter frameworks