Kotlin, Firebase

Firebase FCM Push通知 全台へのpush

 

テスト用のものです。

実際の運用ではデバイストークンなど一手間が必要です。

 

Androidを選択します。

 

 

Empty Activityを選択します。

 

 

Nameを決めると、Package nameが決まるのでメモに控えます。

 

証明書のフィンがプリントの取得

TESTPushApp $ keytool -v -list -alias androiddebugkey -keystore ~/.android/debug.keystore

キーストアのパスワードを入力してください:{空Enterキーを入力}

パスワードを得られます。

 

設定ファイルのダウンロード

appの中にgoogle-services.jsonを配置する

/Users/kanehiroyuu/AndroidStudioProjects/TESTPushApp/app/google-services.json

プロジェクト/app/google-services.json

 

build.gradle

 

プロジェクトレベルのbuild.gradle(project: TEST-Push-App)

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google() ←●確認
        jcenter()
        
    }
    dependencies {
+       classpath 'com.google.gms:google-services:4.3.2' ←●追加
        classpath 'com.android.tools.build:gradle:3.5.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google() ←●確認
        jcenter()
        
    }
}

 

アプリレベルのbuild.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

+ apply plugin: 'com.google.gms.google-services' ←●追加

・・・

dependencies {
+  implementation 'com.google.firebase:firebase-analytics:17.2.0' ←●追加
    implementation fileTree(dir: 'libs', include: ['*.jar'])
・・・
}

+ apply plugin: 'com.google.gms.google-services' ←●追加

 

Sync Nowをクリック。

Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library [com.google.firebase:firebase-iid:19.0.0] /Users/kanehiroyuu/.gradle/caches/transforms-2/files-2.1/f826791e2ecfd93be6a46820de8617dc/firebase-iid-19.0.0/AndroidManifest.xml as the library might be using APIs not available in 15
Suggestion: use a compatible library with a minSdk of at most 15,
or increase this project's minSdk version to at least 16,
or use tools:overrideLibrary="com.google.firebase.iid" to force usage (may lead to runtime failures)

 

エラーが発生したので修正する。

build.gradle(Module: app)

 

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.example.test_push"
-       minSdkVersion 15
+       minSdkVersion 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

 

エラーが出たので修正

dependencies {
    implementation 'com.google.firebase:firebase-analytics:17.2.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.firebase:firebase-messaging:19.0.0' ←●バージョンを19.0.0に変更
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

 

Android Studio > Tools > Firebase >

Cloud Messaging > Set up Firebase Cloud Messagingをクリックします。

 

どんどんAddしてConnectedさせていってください。

 

 

MainActivity.kt

package com.example.test_push

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.google.firebase.messaging.FirebaseMessaging

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
+       FirebaseMessaging.getInstance().subscribeToTopic("test")
    }


}

topicとして『test』を指定しています。

 

 

一旦起動する

 

Push Push!

Firebaseのコンソール

ウィザードにそって入力してPush!

 

 

Push! Push!

 

PHPからpushします。

<?php

$api_key  = "{プロジェクトのAPIキー}";
$base_url = "https://fcm.googleapis.com/fcm/send";

// toに指定しているのはトピック名:testに対して一括送信するという意味
// 個別に送信したい場合はここに端末に割り振られたトークンIDを指定する
$data = array(
     "to"           => "/topics/test"
    ,"priority"     => "high"
    ,"notification" => array(
                             "title" => "テスト送信3"
                            ,"body"  => "テスト送信本文3"
    )
);
$header = array(
     "Content-Type:application/json"
    ,"Authorization:key=".$api_key
);
$context = stream_context_create(array(
    "http" => array(
         'method' => 'POST'
        ,'header' => implode("\r\n",$header)
        ,'content'=> json_encode($data)
    )
));
file_get_contents($base_url,false,$context);

 

APIキーがあればtopicを指定してpushできることがわかる

$ php pushtest.php

 

 

@see

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)