利用可能な場合は、TWTweetComposeViewControllerを使用して、iOSアプリ内からツイートを送信しています。ビューコントローラに定型文を事前に入力してから、ユーザーが自由に変更して送信できるようにします。ほとんどの場合、うまく機能します。蒸留すると、次のようになります(body
有効なものを指していますNSString
):
if (NSClassFromString(@"TWTweetComposeViewController")) {
TWTweetComposeViewController *iOS5twitter = [[TWTweetComposeViewController alloc] init];
[iOS5twitter setInitialText:body];
iOS5twitter.completionHandler = ^(TWTweetComposeViewControllerResult result)
{
[self.viewController dismissViewControllerAnimated:YES completion:nil];
};
[self.viewController presentViewController:iOS5twitter animated:YES completion:nil];
[iOS5twitter release];
}
else {
/* Do something else when the framework is missing */
}
ここbody
で、長すぎる場合、つまり140文字を超える場合、結果のツイートビューにはテキストがまったく含まれず、文字カウントダウンが140に設定されます。この場合、切り捨てが予想された可能性がありますが、クラスリファレンスは、最初のテキストが長すぎる場合にどうなるかを示していますが、に渡す前に、ツイートの最大長に切り捨てる必要があることを受け入れることができますsetInitialText
。
私が理解していないのは、140文字より短い特定のメッセージも空のツイートビューを生成するということです。
最初は、139文字が失敗した完全に有効な文字列のように見えるものを見ました。文字列を短くするとうまくいくことに気づきました。しかし、多くの実験を行った後、テキスト内に表示されたURLを同じ長さのランダムなテキストに置き換えると機能することにも気づきました。つまり、URL自体が問題を引き起こしています。
ですから、使っていたURLに何か変なところがあるのではないかと思いましたが、これに絞り込みました。これは機能します:
NSString *body = @"............................................................................................................................................";
これはしませんが
NSString *body = @"............http://a........................................................................................................................";
観察:
- どちらも140文字の長さです(コンソールでそのように報告します
[body length]
)。唯一の違いは、2番目のURLの真ん中に漠然とURLのようなものが埋め込まれていることです。 - 文字列内のURLの位置は重要ではないようですが、これらの非ピリオド文字のいずれかをピリオドに変更すると(したがって、URLのようになりません)、壊れなくなります。
- 壊れたものを短くして、最後から14ピリオドを削ると、うまくいきます。つまり、合計126文字のピリオドに埋め込まれたこの特定のURLは問題ありません。127以上が壊れています。これがURL自体の長さにどのように関係しているか、または関係しているかどうかは不明です。
誰かがこのようなものを見たことがありますか?何が起こっているのか分かりますか?私は何か間違ったことをしていますか、それともiOS Twitter Frameworkが壊れていますか?