Blog スタッフブログ

Android PHP システム開発

[Android][Kotlin][PHP]カスタムURLスキーム対応

システム開発担当のTFです。

※Android10対応(他バージョンの場合、細かい部分等が異なる事があります)

やり方(Android)

  • AndroidManifest.xmlに、カスタムURLスキームから起動するActivityにintent-filterを設定する
  • Webや、e-mailのリンクから、カスタムURLスキームでアプリを起動する
  • 対象Activityで、カスタムURLスキーム起動時のパラメータ等受け取る

やり方(PHP)

  • 通常のWeb上のリンクは、「カスタムURLスキーム://」で起動可能
  • e-mail、リダイレクトは、「カスタムURLスキーム://」が効かないため、インテントベースのディープリンク対応(Androidの場合)

参考

  アプリ コンテンツ用のディープリンクを作成する
  【Android】はじめてのカスタムURLスキーム
  Webページからアプリを起動しよう
  E メールからアプリケーションを開くためのディープリンクの使用

サンプル

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
	
	<application
        >
		<activity
            android:name=".TestActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
			
			<!-- カスタムURLスキーム設定 -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="testapp"/>
            </intent-filter>
        </activity>
		
	</application>

</manifest>
// カスタムURLスキーム起動判定
var uri: Uri? = intent.data;
if( uri != null ) {
	// カスタムURLスキームから起動した
	
	// パラメータの取得等
	val url = uri.getQueryParameter("url")
}
<?php

$url = "https://test.test";


// 通常リンク
print( '<a href="testapp://?url='.$url.'">' );


// e-mailや、リダイレクトのインテントベースのディープリンク(Androidの場合)
$redirect_url = "intent://?url=". urlencode($url) ."#Intent;scheme=testapp;package=アプリのパッケージ名;end;";
header("Location: ". $redirect_url);


?>