[핑거푸시 개발자 사이트 신규 오픈 안내] 현재 사이트는 2022년 10월 31일 17시 이후 이용이 중지되므로,
새로운 개발자 사이트로 접속해 주시기 바랍니다. 바로가기

Android 사용 가이드

Flutter SDK 3.0.0 기반
Flutter Plugin 1.1.2 변경 사항

[인앱푸시]
※ 일부 테마에서 UI 깨짐 현상 개선
※ 콜백 리스너 오탈자 수정
Flutter 플러그인
생선한 Flutter 프로젝트 폴더와 같은 경로에 다운받은 플러그인 압축파일을 해제합니다.
플러그인 적용하기
프로젝트 pubspec.yaml 에 ‘fingerpush_plugin’ 을 추가합니다.

fingerpush_plugin:
    path: ../fingerpush_plugin/

‘flutter pub get’ 으로 프로젝트에 플러그인을 적용합니다.

핑거푸시 앱 생성 및 FCM 키 생성은 매뉴얼을 참고바랍니다.
Gradle 설정
프로젝트 build.gradle(Top-level build.gradle)에 classpath ‘com.google.gms:google-services:4.3.10’ 을 추가합니다.

<project>/build.gradle
dependencies {
    ...
    classpath 'com.google.gms:google-services:4.3.10'
}

앱 build.gradle(Module-level build.gradle) 최하단에 apply plugin: ‘com.google.gms.google-services’ 을(를) 추가합니다
AndroidManifest 설정
allowBackup 값을 false 로 설정합니다.

AndroidManifest.xml
<application
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name">
    ...
</application>

알림을 수신하는을 위해 서비스를 추가합니다.

AndroidManifest.xml
<application>
    ...
    <service
        android:name="com.fingerpush.fingerpush_plugin.IntentService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
</application>
MainActivity 설정
인앱푸시를 사용하는 경우 FlutterFragmentActivity 를 상속받습니다.

MainActivity.kt
...
class MainActivity : FlutterFragmentActivity(), MethodCallHandler {

    private lateinit var channel: MethodChannel

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        checkPush(intent.extras)
    }

    // 푸시 읽음 처리
    fun checkPush(data: Bundle?) {
        if (data != null) {
            val jsonObject = JSONObject()
            val payload = data.getBundle("payload")

            val keys = payload?.keySet()
            if (keys != null) {
                for (key in keys) {
                    jsonObject.put(key, payload?.getString(key))
                }

                channel.invokeMethod("onNotification", jsonObject.toString())
            }
        }
    }

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        GeneratedPluginRegistrant.registerWith(flutterEngine)
        channel = MethodChannel(flutterEngine.dartExecutor, "FingerPushOnNotification")
        channel.setMethodCallHandler(this@MainActivity)
    }

    override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
        if (call.method.equals("onNotification")) {
            checkPush(intent.extras)
        }
    }
}