Webサイトに設置したTwitter投稿用リンクをデバイスごとに切り替える
Webサイトにツイッター投稿用のリンクを設置しました
ところが、調べてみるとツイッターの投稿リンクはいくつか種類があり、デバイスで対応してる場合としてない場合があります
またスマホの場合、アプリがインストールされていた場合はアプリを起動し、未インストールだったらブラウザを起動するといったことも必要になります
それらを踏まえて、デバイスごとに切り替える実装をしました
やりたいこと
Webサイトに設置したこんな感じのリンクをクリック・・・
するとツイッターアプリが起動して投稿フォームが開く!
というのをAndroidやIOSでも同じ挙動にしたいわけです
リンクからツイッター投稿するリンク表記は3種類
<a href="">ツイッターへ投稿する</a>
先ほどのリンクはHTMLにすればこんな感じのaタグになります
実際に指定のテキストをツイートさせるにはhref属性にリンクを設定します
が、困ったことにツイートする用のリンクは3種類あります
- twitter://post?message=投稿テキスト!
- intent://post?message=投稿テキスト!#Intent;scheme=twitter;package=com.twitter.android;end
- https://twitter.com/intent/tweet?text=投稿テキスト!
どれもツイートするという同じ目的にリンクなのですが、デバイスごとに微妙に挙動が異なります
PC | Android | iOS | |
---|---|---|---|
twitter://post?message= | × | ○ | ○ |
intent://post?message= | × | ○ | ? |
https://twitter.com/intent/tweet?text= | ○(※1) | △(※2) | ○ |
(※1 Chrome,Safari,Firefoxで確認)
(※2 アプリではなくブラウザで起動してしまう)
結果的に言えば、一つのやり方で全てのデバイスをカバーするのは無理なので、デバイスごとにリンクを切り替える必要があります
やり方はいくつかありますが、僕はこんな感じで実装することにしました
PC | Android | iOS | |
---|---|---|---|
twitter://post?message= | × | ○ | ○ |
intent://post?message= | × | ○ | ? |
https://twitter.com/intent/tweet?text= | ○(※1) | △(※2) | ○ |
Androidの時だけ「twitter://post?message」を使い、それ以外の時は「https://twitter.com/intent/tweet?text=」を使うというものです
(今回はAndroidにはなんとなく汎用的なtwitter://を使うことにしましたが、もしかしたら2番目のURLスキーム(intent://)の方がAndroidの形式に特化しているのでベストかもしれません。ツイッターアプリがインストールされてる状態ではtwitter://でも問題ありませんでしたが、未インストールの状態では違いが出るかも)
実装
public function isAndroid()
{
$ua = $_SERVER['HTTP_USER_AGENT'];
if ( preg_match('/Android/ui', $ua) ) {
return true;
} else {
return false;
}
}
$shereUrl = "";
if(isAndroid()){
$shereUrl = "twitter://post?message=" . urlencode('投稿テキスト!');
}
else{
$shereUrl = "https://twitter.com/intent/tweet?text=" . urlencode('投稿テキスト!');
}
<a href="<?php echo $shereUrl; ?>">ツイッターへ投稿する</a>
ディスカッション
コメント一覧
まだ、コメントがありません
新たにPostされたDocs
: ツール関連
キーボードを銀軸から赤軸に買い替えた話
約3年半前、仕事で使うキーボードとしてARCHISS ProgresTouchの ...: スマホ
楽天モバイルがおすすめできない人の特徴とは?
楽天モバイルの最強プランをおすすめできない人の特徴を簡単にまとめてみました また ...: システム開発
なぜスクラムがつらいのか?開発現場が疲弊するのか?スクラムに対する違和感と共に原因を考えてみた
今ではどこの開発現場に行っても、やれスクラムスクラムと、まるでスクラムでもやって ...: Laravel
1つのテーブルを複数のテーブルと結合したい【Laravel10】
1つのテーブルを2つの異なるテーブルに対して結合したいケースがあったのでLara ...: Laravel
Laravelで複数画像アップロード時のvalidateを指定【Laravel10】
jQuery - Image Uploaderを使って、フォームから複数の画像を ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities