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>
ディスカッション
コメント一覧
まだ、コメントがありません
みんながLoadingしてる記事
新たにPostされた記事
: JS
Dropzone.jsで編集画面を作る(アップロード済みの画像を表示)
前回からの続きです Dropzone.jsを使って画像アップロードの編集画面を作 ...: Laravel
LaravelでDBテーブルをupdateした時に、同時に更新した値を取得する裏技[Laravel8]
通常Eloquentのsaveやupdateでは、実行時に更新した値の結果を返し ...: JS
忘れがちなJqueryのあれやこれ
Jqueryって何でこんなに忘れやすいのでしょうか 呪文にかかったくらい覚えられ ...: 資格
理系エンジニアの僕がTOEICで800点をとるためにした勉強
先日、TOEIC L&R テストで800点を超えました 今回は理系エンジ ...: Laravel
[Laravel8]npm run devが失敗する場合の解決法
Laravel8にJetstreamをインストールする際、npm run dev ...HashMap
Created by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
そのほか