2014年11月28日金曜日

UIActivityViewControllerからのツイートで、iOSのバージョンによって文字数計算が違う

ゲームアプリのスコアを周りの人にシェアする機能の手頃な実装方法として、iOSではUIActivityViewControllerがあります。

こちらを使えばユーザーの環境に合わせて、Message、Twitter、Facebookなどで、スコアやスクリーンショット画像をシェアできるので、実装する側としては大変助かります。

『ごはんよそって2』でも、以下のような文面のテキストとスクリーンショット画像をシェアできるようにしていました。
レベル 2 : 120点 ごはんパズルアクション『ごはんよそって2』[iPhone] http://goo.gl/a0YoFQ [Android] http://goo.gl/5qMdTc
このテキストをTwitterでツイートしようとすると、文字数制限の140文字を超えていないはずなのに、超えていると判定されて困ってしまいました。


アプリにはiPhone版、Android版があるので、それぞれショートURLをテキストに入れていますが、このURLがあると、システム内では特殊な文字数計算が行われているみたいです。

また、スクリーンショット画像も添付しているので、その画像へのURLの文字数もシステム内で確保されているかと思います。この辺りのTwitterの仕様は調べていないので断定はできないのですが。

ただ、この文字数計算がiOS 6、7とiOS 8では違っていて、どうもiOS6、7での文字数計算は、多めに計算されているようなのでした。

以下が、iOS 6.1.3でツイートしようとした時の画像です。
残り文字数が -8 となっています。
twitter_ios6.1.3.jpg


次が、iOS 7.0.6での画像です。
こちらも残り文字数が -8 と小さく表示されています。
関係無いですが、iOS 7の時だけステータスバーが表示されてしまっているのに気づきました…。僕のせい?
twitter_ios7.0.6.jpg


最後に、iOS 8.1.1での画像です。
なんと残り文字数が 19 と増えています!
この文字数は、Android(OS 4.3)版の『ごはんよそって2』でツイートする時の残り文字数とピッタリ一致しました。
twitter_ios8.1.1.jpg

27文字の差は、日本語では表現できる内容が大きく変わるので、『ごはんよそって2』では、iOSのバージョンをチェックして、メッセージの内容も変更することにしました。

特にURLの場合は、普通の文字列よりもシステム内部では多く文字数をカウントされているようなので、iPhone版、Android版の両方のURLをツイートメッセージに入れる場合は、文字数制限に悩まされます。

関連記事

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...