์๋ ,
์ด ๊ธฐ๋ณธ ๋์์ธ์ง ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฑ์ด ๋ซํ๋ฉด(์ฑ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋จ) ํธ์ ์๋ฆผ์ด ์์ ํญํ๋ฉด onNotificationOpen์ด ์์๋์ง ์์ต๋๋ค. ์ด๊ฒ์ ์์๋๋ก์ ๋๊น ์๋๋ฉด ์์ ์ด ํ์ํฉ๋๊น?
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํด ์๋ค :(
์ฝ๋ฅด๋๋ฐ ์ฌ๊ฐ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฐฑ์ ๋ค์ ์ฐ๊ฒฐํ์ญ์์ค. ์๋๋ก์ด๋ ๋ผ์ดํ์ฌ์ดํด์ ๋ํ ์ฝ๋ฅด๋๋ฐ ๋ฌธ์ ์ฐธ์กฐ: http://cordova.apache.org/docs/en/6.x/guide/platforms/android/index.html#lifecycle -guide
@robertarnesson ๋ต๋ณ์ ์กฐ๊ธ ๋ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? iOS์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฑ์ด ํฌ๊ทธ๋ผ์ด๋ ๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ๋์ ์๋ฆผ์ ๋ฐ์ ์ ์์ง๋ง ์ฑ์ ์ข ๋ฃ/์ข ๋ฃํ๋ ์ฆ์ ๋ ์ด์ ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ ํฌ๊ทธ๋ผ์ด๋(Android 6.0.1) ๋ชจ๋์์ ์๋ฆผ์ ์์ ํฉ๋๋ค... ํ์ง๋ง ์๋ฆผ ์ด๊ธฐ๋ ์ฑ์ ์คํํ์ง ์๊ณ ํญ ํ ํธ๋ ์ด ์๋ฆผ์ด ์ง์์ง๊ณ ์๋ฆผ ๋ฐ์ดํฐ๊ฐ ์์ค๋ฉ๋๋ค. (์ด๋ ์ฑ์ด ์ผ์ ์ค์ง๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ํฉ๋๋ค). ํก๋จ๋ณด๋ ๋๋ฌธ์ผ๊น์? ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@robertarnesson @Taracque
์ด๊ฒ์ด ๋์์ด ๋๋์ง ํ์คํ์ง ์์ง๋ง ์ฌ๋๋ค์ด ์์ ์ ์ฝ๋ ์ํ ๋์ ๋จ์ด๋ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํ๊ณ ๋์์ ์ค ๋ ์ ๋ง ์ซ์ดํฉ๋๋ค.
์ด๊ฒ์ ๋ด index.html์ ์๋ ๋ด์ฉ์ ๋ํ ๊ธฐ๋ณธ ํด์์ด๋ฉฐ iOS ๋ฐ Android์์ ์๋ํ๋ฉฐ ํ์ด๋ก๋๋ ์กฐ์์ ์ํด ์ฑ์ ์ ๋ฌ๋ฉ๋๋ค.
iOS์์๋ ์ฑ์ด ํฌ๊ทธ๋ผ์ด๋์ ์์ ๋ ์๋ฆผ์ด ์์ ๋ ๋๋ง๋ค ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๋ ์ฑ์ ๋ค์ ์์ํ ํ ๋ฅผ ํญํ์ฌ cordova.js์ 'deviceready' ๊ธฐ๋ฅ๋ง ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์๋ฆผ์ ๋ฐ๊ฑฐ๋ ์ฑ์ ์ด๋ฉด ๋ฉ๋๋ค.
Android์ ๊ฒฝ์ฐ 'resume'์ 'deviceready'๋ก ์ฌ์ฉํด์ผ ํ์ต๋๋ค. ์ฑ์ด ์ฒ์ ๋ก๋๋ ๋ ํ ๋ฒ๋ง ์คํ๋๋ ๊ฒ ๊ฐ์์ต๋๋ค(์ดํด๊ฐ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค).
function onLoad(){
//fire this with load of the HTML page
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady(){
// this will fire when the app first runs (iOS and Android)
// iOS will run this after tapping a notification as well but not Android
// Create the resume as soon as the device is ready.
document.addEventListener("resume", onResume, false);
// add initial cordova-plugin-firebase function calls here
// e.g TokenRefresh, onNotificationOpen etc
window.FirebasePlugin.onTokenRefresh(function(token){
//Do something with the token server-side if it exists
});
// get any initial or resume notification (used for iOS)
var payload = getNotification();
}
function getNotification(){
// get any notification variables for use in your app
window.FirebasePlugin.onNotificationOpen(function(notification){
//Check if notification exists then do something with the payload vars
var str = JSON.stringify(notification);
console.log(str);
});
return str;
}
function onResume(){
//Add plugin functions here after app has resumed from background
// or after notification is tapped (needed for Android)
//get resume notification and payload (needed for Android)
var payload = getNotification();
}
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ ๋ ์ฌ๊ธฐ์ ์์ ์ ๋์น๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฑ ์์ฒด๋ ๋ฐฐ๊ฒฝ์ด๋ ์ ๊ฒฝ์๋ ์์ต๋๋ค. ์ฑ์ ์ข ๋ฃํ๊ณ ๊ธฐ๋ฅ์ด ์คํ๋์ง ์์ผ๋ฉด ์ฑ์ด ์ผ์ ์ค๋จ๋์ง ์๊ณ ์ฑ์ด ํฌ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ์ง ์๊ณ ์์๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ฐ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฅ์น๊ฐ ์ค๋น๋ ํ์๋ onNotification open์ด ์คํ๋์ง ์์ต๋๋ค.
๋ด๊ฐ ์ดํดํ๋์ง ํ์คํ์ง ์์ง๋ง ์ด๊ฒ์ด ๋ง์ต๋๋ค.
1: ์ฑ์ด ์์ ํ ๋นํ์ฑ ์ํ์
๋๋ค.
2: ์ฑ์ ๋ํ ๊ธฐ๋ณธ ์๋ฆผ์ ๋ฐ์ต๋๋ค.
3 ๋น์ ์ ์๋ฆผ์ ํด๋ฆญ
4 ์ฑ ๋ก๋
5 onNotificationOpen์ด ์คํ๋์ง ์์ต๋๋ค.
์ด ์ฌ๋ฐ๋ฅธ์ง?
์ด๊ฒ์ ์ด๋ค OS๋ฅผ ์ํ ๊ฒ์ ๋๊น?
์ผ๋ถ ์ฝ๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
์คํฌ๋ฆฝํธ์ Cordova.js๋ฅผ ํฌํจํ์ต๋๊น?
๋ก๋ฉ ํ์ด์ง์ js ์ค๋ฅ๊ฐ ์๋ค๊ณ 100% ํ์ ํฉ๋๊น?
@device68 @nikrhes ๊ฐ ๋งํ๋ฏ์ด ์ฑ์ด ์ฒ์์ ์์๋์ง ์์์ ๋ onNotificationOpen์ด ์คํ๋๋์ง ์๊ณ ์ถ์ต๋๋ค.
์ด๋ ฅ์ ๋ฐ deviceready์์ ํธ์ถ๋๋ onNotificationOpen์ ์ฌ์ฉํ์ฌ Android์ iOS ๋ชจ๋์์ ํ
์คํธํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ ์ธ๊ธ ํ ์ํฉ ๋ง ์๋ํ์ง ์์์ต๋๋ค. ๋ค๋ฅธ ์ํฉ์์๋ ์์์น ๋ชปํ ๋์์ด ์์ต๋๋ค.
๋ด๊ฐ ์ฐ 137ํธ๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
@chanphillip , ์์นจ์ ๋ด์ผ๊ฒ ๋ค. ์ด์ ๋ฒ์ ์ XCODE๋ฅผ ์ฌ์ฉ ์ค์ด๋ฏ๋ก iOS 10์ ํ์ธํ ์๋ ์์ง๋ง Android์์ ์ ํํ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
๋ด ์ฑ์ ์๋ฆผ๊ณผ ์ด๋ ฅ์์ ํ์ด๋ก๋๋ก ์ฝ๋ ์คํํธ๋ฅผ ๋ชจ๋ ๋ง์ด ์ฌ์ฉํ์ง๋ง ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ง ๋ชปํ์ต๋๋ค.
@device68 ๋ชจ๋ ์ํฉ์ ์ฑ์ด ๋นํ์ฑ ์ํ์ผ ๋๋ง ๊ธฐ๋ฅ์ด ์ ํ ์คํ๋์ง ์๊ณ ์ ๋๋ก ์๋ํฉ๋๋ค. ๊ฑฐ์ ๋ชจ๋ IOS ๋ฐ Android OS์์ ํ ์คํธ๋ฅผ ๊ฑฐ์ณค์ต๋๋ค. ๊ทธ๋๋ ์๋์ด ์๋๋.
์ค๋ Android์์ ํ ์คํธํ๋ ๋์ ๊ธฐ์ต๋๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋นํ์ฑ ์ฑ 1๊ฐ
์๋ฆผ์ ๋ฐ๊ณ ํด๋ฆญํ๋ฉด ์์๋๋ก ์ฑ์ด ๋ก๋๋๊ณ onDeviceReady ๋ด์ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ ์ฝ๋๊ฐ ํด๋น ํ์ด๋ก๋๋ฅผ ์บก์ฒํฉ๋๋ค.
Resume ๋ด์ ๋ชจ๋ ์ฝ๋๋ ํ์ด๋ก๋๋ฅผ ์บก์ฒํ์ง ์์ต๋๋ค.
์ฑ์ด ์ฌ์ ํ ํ์ฑ ์ํ์ด๊ณ ์์ง ์ต์ํ๋์ง ์์ ๋์์ ์ถ๊ฐ ์๋ฆผ์ onDeviceReady ๋ด๋ถ์ ๊ธฐ๋ฅ์ ์ํด ์์ ๋ฉ๋๋ค.
2 ์ฒ์์ผ๋ก ์ฑ์ ์ต์ํํฉ๋๋ค.
decice๊ฐ ์ด๋ฏธ ์ค๋น๋์ด ์๊ณ ์ด์ ์ฌ๊ฐ ์ํ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฒ์์ผ๋ก ์ฑ์ ์ต์ํํ๋ฉด onDeviceReady๊ฐ ์ค์ง๋ฉ๋๋ค.
์๋ฆผ์ ๋ฐ๊ณ ํญํ๋ฉด ์ฑ์ด ์ด๋ฆฌ๊ณ Resume ๋ด๋ถ์ ํ๋ฌ๊ทธ์ธ ์ฝ๋๊ฐ ์ด์ ํ์ด๋ก๋๋ฅผ ์บก์ฒํฉ๋๋ค.
๋ชจ๋ ํ์ ์๋ฆผ์ Resume์์ ์์ ํฉ๋๋ค.
3 ์ต์ํ๋ ์ฑ(์ผ๋ฐ์ ์ผ๋ก ๋งํจ)
๋ด ์ฑ์ด ์ธ์ ๋ ์ง ์ต์ํ๋๊ณ ์๋ฆผ์ ํด๋ฆญํ๋ฉด Resume์ด ์ด๋ฅผ ์บก์ฒํ์ง๋ง ํด๋ฆญํ์ง ์๊ณ ๋์ ์ฑ์ ์๋์ผ๋ก ์ด๋ฉด Resume์ ์๋ฌด ์์ ๋ ์ํํ์ง ์์ผ๋ฉฐ onNotificationOpen์ด ๋ด ์ฝ๋์ ์ด๋ ๊ณณ์์๋ ์คํ๋์ง ์์ต๋๋ค.
์ด ํ๋์ iOS 9.3์์ ์์ ํ ๋ค๋ฆ ๋๋ค.
4 ํฌ๊ทธ๋ผ์ด๋ ์ฑ
์ฌ๊ฐํ ํ ์ฑ์์ ์๋ฆผ์ ๋ฐ์ผ๋ฉด Resume์ด ํ์ด๋ก๋๋ฅผ ์บก์ฒํฉ๋๋ค.
5 ํฌ๋ง ์ฑ
์ฑ์ ์ฃฝ์ด๋ฉด #1๋ถํฐ ์์ํฉ๋๋ค.
6 ํ์ด๋ก๋
GCM์ด Android์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ์์ ๋ด๊ฐ ๋ณธ ๋ ๊ฐ์ง ์ฐจ์ด์ ์ ์๋ฆผ์ด ์ฑ ์ธ๋ถ์์ ํด๋ฆญ๋์๋์ง ๋๋ ํฌ๊ทธ๋ผ์ด๋์ ์๋ ๋์ ์์ ๋์๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์๋ฆผ์ ํญํ๋ฉด Google์์ ์๊ฐ ์ฝ๋, ๋ณด๋ธ ์ฌ๋, ๋ฉ์์ง ID ๋ฑ์ ์ถ๊ฐํฉ๋๋ค.
Google์ ์์ ๋ด์ฉ์ ์ ๊ฑฐํ์ง๋ง ๋ค๋ฅธ ๋ชจ๋ ์ํฉ์์๋ tap = false๋ง ์ถ๊ฐํฉ๋๋ค.
๋ณด๋ด๋ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์กด์ฌํฉ๋๋ค.
์น, Android ๋ฐ iOS ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ์๋ฒ ์ธก Curl API๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ถ๊ทน์ ์ผ๋ก Android์์๋ ๋ชจ๋ ๊ฒ์ด ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ ์๋ชป๋๊ณ ๋น๋ ผ๋ฆฌ์ ์ธ iOS ๊ตฌํ์ ๋๋ค.
iOS์ ๋ชจ๋ ๊ฒ์ onDeviceReady์ ํจ๊ป ์๋ํ๋ฉฐ onNotificationOpen์ ์๋ฆผ์ ๋ฐ์ ํ ์๋์ผ๋ก ์ฑ์ ์ด๊ฑฐ๋, ๋ฉ์์ง๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ์ฑ์ด ํฌ๊ทธ๋ผ์ด๋์ ์๋ ๋์ ์๋ฆผ์ ๋ฐ์ ๊ฒฝ์ฐ์๋ ์๋ฆผ์ด ์์ ๋ ๋๋ง๋ค ํธ์ถ๋ฉ๋๋ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋ ์ํฉ์์ ํ์ด๋ก๋๋ฅผ ์บก์ฒํ๋ ค๋ฉด onDeviceReady ๋ฐ Resume์ ๋ชจ๋ ์ฌ์ฉํ๊ณ ๊ฐ๊ฐ ์๋์ onNotificationOpen ๋ฒ์ ์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
@device68 ์์ธํ ์ค๋ช
๊ฐ์ฌํฉ๋๋ค.
์ฌ์ค ๋ด๊ฐ ์๋ชป ๋งํ๋ค. ๋๋ onNotificationOpen์ ์ฅ์น ์ด๋ ฅ์์ ์ค๋น ๋ชจ๋์ ๋ฃ์์ง๋ง ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ํ๋ ๋์ ์ ์ค ์ผ์ด์ค 1(์ฑ์ด ์คํ๋์ง ์์ ๋ ์๋ฆผ ํด๋ฆญ)์ด ์๋ํ์ง ์์์ต๋๋ค. ๋น์ ์ด ์ค๋ช
ํ ๊ฒ์ฒ๋ผ.
ํ ์คํธํ๋ ๋์ ์ด์จ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋๋ platform.ready()๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ๋ด ์ดํด๋ก๋ deviceready์ ๊ฐ์์ผ ํฉ๋๋ค.
์ฑ์ด ์คํ๋์ง ์์ ๊ฒฝ์ฐ(์ฑ์ด ์ข ๋ฃ๋จ)์๋ onNotificationOpen์ด ์คํ๋๋ ๊ฒ์ ๋ค์ ํ์ธํ ์ ์์ต๋๊น? ๋ํ iOS์์๋ ์ด๊ฒ์ ํ ์คํธํ ์ ์์ต๋๊น? ๊ฐ์ฌํฉ๋๋ค.
@chanphillip ๋์๋๋ฆด ์ ์์ด์ ๋คํ์ ๋๋ค.
๋ง์ต๋๋ค. CLI๋ฅผ ํตํด ์ค์น๋ ์์ phonegap ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ณ ๊ทธ ์์ ์ด ํ๋ฌ๊ทธ์ธ์ ์ค์นํ์ต๋๋ค.
ํ ์ค์ ๋ก ๋ช ๊ฐ์ง ์ถ๊ฐ ํ ์คํธ๋ฅผ ์ํํ๊ณ 4๊ณณ์์ ๊ฒฝ๊ณ ๊ฐ ์๋ ๋ด ์ฅ์น์ ๋น๋์ค๋ฅผ ๋ง๋ค์์ต๋๋ค.
https://www.youtube.com/watch?v=xrWQH2wE8Fo
์ด๊ฒ์ ๋น์ ์ด๋ณด๊ณ ์๋ ๊ฒ์ ํ์ธํ๋ ๊ฒ ๊ฐ์ต๋๋ค. onNotificationOpen์ ์ฑ์ ์ฝ๋ ๋ถํ ์ ์ ๋ฐํ๋ ์๋ฆผ์ ํญํ ๋ ์ ํ ์คํ๋์ง ์์ต๋๋ค. ๊ทธ ํ์์ผ ์๋ฆผ์ด onNotificationOpen ํจ์์์ ์์ง๋ฉ๋๋ค.
๋ฆฌ์ค๋๋ ์์๋๋ก ์คํ๋์ง๋ง onNotificationOpen์ ์คํ๋์ง ์์ต๋๋ค.
๋๋ฅผ ์ํด ์ด๊ฒ์ ์๋ง๋ ๋ด๊ฐ ์ง๊ธ๊น์ง ๊ทธ๊ฒ์ ๋ณด์ง ๋ชปํ ์ด์ ๋ฅผ ์ค๋ช ํ๋ ๋ด ์ฑ์ ๋ํ ํน๋ณํ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
Android 4+, 6+ ๋ฐ 7+๋ฅผ ์คํํ๋ ๊ธฐ๊ธฐ์์ ํ ์คํธํ๋๋ฐ ๋ชจ๋ ๋์ผํ ๊ฒฐ๊ณผ์ ๋๋ค.
๋ถํํ๋ iOS์ ๋ํด ๋ง์ ๋์์ ์ค ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ Yosemite ๋ฐ XCODE 7.1(iOS 9.3 SDK๋ฅผ ๊ฐ์ ๋ก ํฌํจ)๊ณผ ํจ๊ป Virtualbox๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์๋ฆผ์ด onDeviceRedy์์๋ง ๋ ์ ์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ๊ณ Resume์ ์ฌ์ฉํ ํ์์กฐ์ฐจ ์์์ต๋๋ค. ์ด๊ฒ์ iOS 9+์ด์ง๋ง 10+ ๋ฏธ๋ง์ ๊ธฐ๊ธฐ๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ต์ข ์ฌ์ฉ์๋ ์ ํ๊ธฐ๋ฅผ 10.2๋ก ์ ๋ฐ์ดํธํ์ผ๋ฉฐ ์๋ฆผ์ ์๋ ๊ธฐ๊ฐ์ ๋ฉ์ท์ต๋๋ค. 9.3 SDK๋ก ๋น๋ํ XCODE ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด์ Mac์ ๊ตฌ์ ํด์ผ ํฉ๋๋ค.
์์์ด ๋์์ด ๋๋ค๋ฉด ์๋ ค์ฃผ์ธ์.
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉด ํด์๋ค. ์ฑ์ด ์ด๋ฆฌ์ง๋ง ๊ธฐ๋ฅ์ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค. ๊ทํ์ ๋น๋์ค์์ ๋์์ ์ฌํํ๋ ค๊ณ ์๋ํ์ผ๋ฉฐ ๋ฌผ๋ก ondeviceready ์ํ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฉ์๋๋ ํธ๋ฆฌ๊ฑฐ๋์ง ์์ต๋๋ค.
์ฐธ๊ณ : ๋ผ์ดํธ ํ ์ด๋ธ ์์ผ์ ํตํด ํจ์๋ฅผ ํ๊ฐํ๋ฉด ์๋ํฉ๋๋ค. IDE์์ ํ๊ฐํ ๋๋ง ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฉ์๋์ ํ๋ฌ๊ทธ์ธ ๋ฒ์ ์ด "ํธ์ถ๋์ง ์์"๊ณผ ๊ฐ์ด ํจ์๋ ํธ๋ฆฌ๊ฑฐ๋์ง ์์ต๋๋ค. ๊ธฐ๋ฅ ํ๊ฐ๊ฐ ์๋ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์๋
,
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ผ๋ฏ๋ก ์ฝ๋์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค.
์ฝ๋ ์คํํธ โโ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ๋ฌธ์์ onNewIntent๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ๋์ ์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์ฝ๋๊ฐ ์ข์ ๋ณด์
๋๋ค.
<strong i="9">@Override</strong>
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
FirebasePlugin.sendNotification(intent.getExtras());
}
๊ทธ๋ฌ๋ ํธ์ถ๋ ์ด ์ฝ๋ฐฑ์ ์๋ฆผ์ด ํ์ด๋ก๋์์ click_action์ ์ฌ์ฉํ๊ธฐ ์์ํ๋๋ก ์๋๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
{
"to": "/topics/news",
"notification": {
"title": "Click Action Message",
"text": "Sample message",
"click_action": "android.intent.action.MAIN"
}
}
๊ทธ๋ ๊ฒํ๋ ค๊ณ ํ์ง๋ง ์ฑ๊ณตํ์ง ๋ชปํ๋ฉด ํด๋ฆญ ๋์์์ ์ค์ ํด์ผํ๋์ง ํ์คํ์ง ์์ต๋๋ค.
๋ด๊ฐ ์ค์ ํ ๊ฐ์ด ๋ฌด์์ด๋ ์ฑ์ด ์คํ๋์ง ์์
<activity android:name="MainActivity" >
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
ํด๋ฆญ ๋์ ๋๋ฝ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํ๋ฌ๊ทธ์ธ ์ด๊ธฐํ ์ค์ ์ถ๊ฐ ์ฝํ
์ธ ๋ฅผ ์ฝ๋ ๊ฒ์ด ์ข์ ์ ์์ต๋๋ค.
์ด ์ฝ๋๋ก ์๋ํ๊ณ ์ด๋ฒ์๋ ์๋ฆผ์ ๋ฐ์์ต๋๋ค.
<strong i="21">@Override</strong>
protected void pluginInitialize() {
final Context context = this.cordova.getActivity().getApplicationContext();
final Bundle extras = this.cordova.getActivity().getIntent().getExtras();
this.cordova.getThreadPool().execute(new Runnable() {
public void run() {
Log.d(TAG, "Starting Firebase plugin");
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
if(extras != null && extras.size()>1) {
FirebasePlugin.sendNotification(extras);
}
}
});
}
์ด์จ๋ ๋๋ฌ์ด ํดํน์ฒ๋ผ ๋ณด์ ๋๋ค.
์ข์, manifest.xml์ ๊ธฐ๋ณธ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ฌ click_action์ ์ฌ์ฉํ ์ ์์ง๋ง onNewIntent๋ ํธ์ถ๋์ง ์์ต๋๋ค.
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Firebaseํ๋ฌ๊ทธ์ธ.์๋ฐ
<strong i="6">@Override</strong>
protected void pluginInitialize() {
final Context context = this.cordova.getActivity().getApplicationContext();
final Bundle extras = this.cordova.getActivity().getIntent().getExtras();
this.cordova.getThreadPool().execute(new Runnable() {
public void run() {
Log.d(TAG, "Starting Firebase plugin");
mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);
if(extras != null && extras.size()>1) {
// FirebasePlugin.sendNotification(extras);
if (FirebasePlugin.notificationStack == null) {
FirebasePlugin.notificationStack = new ArrayList<Bundle>();
}
notificationStack.add(extras);
}
}
});
}
์์์ ์ค๋ช ํ ๊ฒ๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๋๋ฐ ์ฃผ๋ก ์๋ฆผ์ ํญํ์ฌ ์ฑ์ ์์ํ ๋ ์๋ฆผ ํ์ด๋ก๋๊ฐ ์ ๋ฌ๋์ง ์์์ต๋๋ค. @huny0522๋ ์ ์ ์์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๐
ํฅ๋ฏธ๋กญ๊ฒ๋ ์ด๊ฒ์ ํน๋ณํ ํ์ํ์ง ์์ง๋ง ์๋ํด๋ณด๊ณ ๊ทธ๊ฒ์ด ์ ์๊ฒ ๋ง๋์ง ํ์ธํ ๊ฒ์ ๋๋ค. ์ฑ์ ์ฝ๋ ๋ถํ ํ ์๋ฆผ ํ์ด๋ก๋๊ฐ ํ์ํ ๋๋ถ๋ถ์ ์ฌ๋๋ค์๊ฒ ํฐ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ด ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐ์๊ฐ ์ด ๋ณ๊ฒฝ์ ์ด๋ป๊ฒ๋ ๊ตฌํํ ์ ์๋ค๋ฉด ์ด์์ ์ผ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ๋ ์์ ๋์๊ฑฐ๋ ๋ค์ ๋ฆด๋ฆฌ์ค์์ ์์ ๋ ์์ ์ ๋๋ค!?
@huny0522 ์ ํจ์น๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค. Android ์ฝ๋ ์คํํธ์์ onNotificationReceived ์ฝ๋ฐฑ์ด ๋ฌด์๋์์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์๋๋ฆฌ์ค๋ ์์๋๋ก ์๋ํฉ๋๋ค.
์ ์๋ ๋ชจ๋ ์๋ฃจ์ ์ ์๋ํ ํ github์์ ํ๋ฌ๊ทธ์ธ์ ๋ค์ ์ค์นํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ฝ๋ฅด๋๋ฐ ํ๋ฌ๊ทธ์ธ ์ถ๊ฐ https://github.com/arnesson/cordova-plugin-firebase.git --save
์ด๋ค ์ฌ๋์ ํด๊ฒฐํ์ต๋๋ค
@device68 ์ด ์ด 3๋จ๊ณ ??
์ต์ํ๋ ์ฑ(์ผ๋ฐ์ ์ผ๋ก ๋งํจ)
๋ด ์ฑ์ด ์ธ์ ๋ ์ง ์ต์ํ๋๊ณ ์๋ฆผ์ ํด๋ฆญํ๋ฉด Resume์ด ์ด๋ฅผ ์บก์ฒํ์ง๋ง ํด๋ฆญํ์ง ์๊ณ ๋์ ์ฑ์ ์๋์ผ๋ก ์ด๋ฉด Resume์ ์๋ฌด ์์ ๋ ์ํํ์ง ์์ผ๋ฉฐ onNotificationOpen์ด ๋ด ์ฝ๋์ ์ด๋ ๊ณณ์์๋ ์คํ๋์ง ์์ต๋๋ค.
์ด๊ฒ์ด ์ด์ ๋์ ์ ์ผํ ๋ฌธ์ ์ ๋๋ค.
์ฌ๊ธฐ์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ณด๋ธ ๊ฐ์ฒด์์ ์ด ์ค์ ์ ๊ฑฐํด์ผ ํ์ต๋๋ค. "click_action":"YOUR_DATA_HERE".
์ด์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ๋ ์๋ฆผ์ ํฐ์นํ๋ฉด ์ฑ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋ฉ๋๋ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ionic/cordova ์ฑ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ง๋ง Android 6.0์ด ์ค์น๋ ๊ธฐ๊ธฐ์์๋ง ๋ฐ์ํฉ๋๋ค. ์ด ์ฅ์น์์๋ ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๋ ์ ๊ฒฝ์ ์๋ (!) ์ํ ํ์์ค์์ ์๋ฆผ์ด ํญ์ ํธ๋ฆฌ๊ฑฐ๋๊ณ ์๋ฆผ์ ์ด ๋ ์ฝ๋ฐฑ์ด ํธ๋ฆฌ๊ฑฐ๋์ง ์์ผ๋ฏ๋ก ํ์ด๋ก๋๊ฐ ํ์๋์ง ์์ต๋๋ค.
๋ด๊ฐ ํ
์คํธํ ๋ค๋ฅธ ๋ชจ๋ ์ฅ์น๋ ๊ด์ฐฎ์์ต๋๋ค(Android 5, iOS 9 ๋ฐ 10). ์ ๊ฒฝ์์ ์ฝ๋ฐฑ ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ณ ์ด์ ๋ฐ์ํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฌธ์์ ์ค๋ช
๋ ๋๋ก ์ํ ํ์์ค์์ ์ ์์ ์ผ๋ก ์๋ฆผ์ ์์ ํฉ๋๋ค.
@abhishek-kollipara ๋ ผ์๋ ๋ฌธ์ ๋ ํฌ๊ทธ๋ผ์ด๋/๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์์ ํ์ด๋ก๋๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ผ ์๋ฆผ์ ํญํ๊ณ ์๋ฆผ ํ์ด๋ก๋๋ฅผ ์ ํํ์ฌ ์ฑ์ด ์ฝ๋ ๋ถํ ๋ ๋์ ๋๋ค. ์ด๊ฒ์ ํ์ด๋ก๋๊ฐ ์ด๋ป๊ฒ ํ์ฑ๋๋์ง์ ๋ํ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ํนํ ์ด ํ๋ฌ๊ทธ์ธ์ด ์๋ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ๋ฌธ์์ ์ค๋ช ๋์ด ์์ ๋ ๊ทธ๋ ์ต๋๋ค.
์ง๋ ์ดํ ๋์ ์ถ์ ์ ์์ํ ์ดํ๋ก ์ฝ๋ ๋ถํธ์์ ํ์ด๋ก๋๋ฅผ ์ก๋ ๋ฐ ์ฒ์์ผ๋ก ์ฑ๊ณตํ์ต๋๋ค. ์ด์จ ๋ค์ดํฐ๋ธ ํ๋ฌ๊ทธ์ธ '์น ์๋'๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๋ฌธ์ํ๋ ๋๋ก ์ค์นํ๊ณ ๋ถํ ์ ๋ด์ฅ ํจ์ getIntent()๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฑ์ด ์๋ฆผ์ ์ํด ๋ถํ ๋๋ ๊ฒฝ์ฐ ์๋ฆผ ๋ฐ์ดํฐ๋ ๋ฐํ๋ ๊ฐ์ฒด ๋ด๋ถ ์ด๋๊ฐ์ ์์ ๊ฒ์ ๋๋ค.
@heidji ์ด๊ฒ์ IOS์์ ์๋ํฉ๋๊น?
๋ด ๊ฒฝ์ฐ :
๊ธฐ๊ณ์ ์ธ์กฐ ์ธ๊ฐ:
-์ฝ๋ ์คํํธ: OnNotificationOpen ์คํ
-์ต์ํ ์ฑ: OnNotificationOpen ์คํ
-ํฌ๊ทธ๋ผ์ด๋ ์ฑ: OnNotificationOpen ์คํ
IOS:
-์ฝ๋ ์คํํธ: OnNotificationOpen์ ์์ํ์ง ์์
-์ต์ํ ์ฑ: OnNotificationOpen ์คํ
-ํฌ๊ทธ๋ผ์ด๋ ์ฑ: OnNotificationOpen ์คํ
๋์ ์ค์ ๊ณ ๋ง์
@Hanzofm ์์งํ iOS์์ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Web Intent ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ณ ๋ถํ ์ ์ฝ์์ ์ถ๋ ฅ์ ๊ธฐ๋กํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
@Hanzofm ์ด ์ค๋ช ํ iOS์์ ๋์ผํ ๋์์ด ์์ต๋๋ค.
iOS์์๋ ๋์ผํ ๋์์ด ์์ต๋๋ค. onNotificationOpen์ ์๋ฆผ์ ํด๋ฆญํ ๋ iOS ์ฑ์ ์ฝ๋ ์คํํธ์์ ํธ์ถ๋์ง ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ ๋ฒ์ 0.1.25 ์ฌ์ฉ.
์
๋ฐ์ดํธ:
Firebase ํ๋ฌ๊ทธ์ธ๊ณผ ํจ๊ป "cordova-plugin-local-notifications"๋ฅผ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. "cordova-plugin-local-notifications" ํ๋ฌ๊ทธ์ธ์ ์ ๊ฑฐํ๋ฉด ์ ๋๋ก ์๋ํ์ต๋๋ค.
๋ํ ์ฝ๋ ์คํํธ(iOS) ์ noNotificationOpen์ ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น?
๊ฐ์ฌ ํด์
์ ๊ฒฝ์ฐ์๋ ๋ก์ปฌ ์๋ฆผ ํ๋ฌ๊ทธ์ธ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ํด๊ฒฐ๋์์ต๋๋ค. ์ด ํ๋ฌ๊ทธ์ธ ๋ฐ ํธ์ ์๋ฆผ ํ๋ฌ๊ทธ์ธ๊ณผ ํธํ๋์ง ์์ต๋๋ค.
๋ถํํ๋ ๋๋ ๊ทธ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค :)
์ด๊ฒ ์ผ์ ธ์ผ ํ๋๊ฑด๊ฐ์?
์ฒญ์๋ฅผ ์ํด ๋ซ์ต๋๋ค. ์ต์ ๋ฒ์ ์ผ๋ก ํ ์คํธํ๊ณ ๋ฌธ์ ๊ฐ ๊ณ์๋๋ฉด ๋ค์ ์ฌ์ญ์์ค.
@heidji ๊ทํ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค์ ์ํฉ์์ ์๋ฆผ ๋ฐ์ดํฐ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ณ ์์ต๋๊น?
์ฑ์ด ์์ ํ ๋ซํ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํธ์ ์๋ฆผ์ ๋ฐ์ต๋๋ค. ์ฌ์ฉ์๋ ์๋ฆผ์ ํด๋ฆญํ์ง ์๊ณ ๋์ ์๋ฆผ ํ์์ค์์ ์ ๊ฑฐํฉ๋๋ค. ์ฌ์ฉ์๋ ๋์ค์ ์ฑ์ ์ด๊ณ ์๋ฆผ ํ์ด์ง๋ก ์ด๋ํ์ง๋ง ์๋ฌด ๊ฒ๋ ํ์๋์ง ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํฌ๊ทธ๋ผ์ด๋์์ ์๋ฆผ์ ๋ฐ์ง๋ ์๊ณ ์ฑ์ ์ด๊ธฐ ์ํด ํด๋ฆญํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ด ์๋ฆผ์ด ์ฌ์ฉ์์๊ฒ ํ์๋๋ค๋ ๊ฒ์ ์์์ผ ํฉ๋๋ค. ionic3์์ ์ด๋ป๊ฒ ํ๋์?
@akildemir Ionic์์๋ ๊ทธ๋ ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋์ด ์ผ๋ฐ์ ์ผ๋ก ํ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ฑ์ ์ด ๋ ์์ ์ ์๋ฒ์ ์๋ฆผ์ ๊ธฐ๋กํ๊ณ ๊ฒ์ํด์ผ ํฉ๋๋ค.
@heidji ์ด ์๋ฆผ์ด ์กด์ฌํ๋์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ์๋ฆผ์ ๊ฒ์ํ๊ธฐ ์ํด ๋ด ์๋ฒ์ ์๋ฆผ์ ์ด๋ป๊ฒ ๊ธฐ๋กํฉ๋๊น?
firebase๋ ์ฅ์น๊ฐ ์๋ ๋ด ์๋ฒ์ ์๋ฆผ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์๋๋ฉด firebase๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์๋ฆผ์ ์ํด ์์ฒด ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ป์ด์์ต๋๊น?
@akildemir ๋ด ๋ง์ ํธ์ ์๋ฆผ์ ๋ง๋ค ๋ ์์ ์ ์๋ฒ๋ ํ๋ก์ ํธ์ ์ฌ์ฉ ์ค์ธ ์๋ฒ์ ๊ฐ์ ๋ค๋ฅธ ๊ณณ์๋ ํธ์ ์๋ฆผ์ ์กด์ฌ๋ฅผ ๋ฑ๋กํ๋ค๋ ๋ป์
๋๋ค. Firebase๋ ์ด๋ฌํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฌํ ์๋ฆผ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด์ง๋ง ๋ด ํ๋ก์ ํธ์์ PHP ์๋ฒ์์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋ฉด(์: ๋๊ตฐ๊ฐ๊ฐ ๋น์ ์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋์ ๋) ์๋ฆผ์ ๋ณด๋ด๊ธฐ ์ํด Firebase์ ์ฐ๋ฝํ๊ณ ์ด ์ด๋ฒคํธ๋ฅผ "is_read = 0"์ผ๋ก ์ ์ฅํฉ๋๋ค. ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์๋ฆผ์ ํด๋ฆญํ์ง ์์ผ๋ฉด ์น์ฌ์ดํธ์์ ๊ฒ์ํ๊ฑฐ๋ ์ฑ์์ ์์ฒด ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์๋ฆผ์ ํธ์ถํ๊ฑฐ๋ ๋ฌด์์ด๋ ํ์ค ๊ฐ๋ฐ ๋๊ตฌ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
@heidji ๋ด ์ฑ์ ๋ํ ์น์ฌ์ดํธ๊ฐ ์์ง๋ง ๋ค ๋ง์ํ์ ๋ด์ฉ์ ๊ฝค ๋ ผ๋ฆฌ์ ์ ๋๋ค. ์๋ฆผ์ ์๋ฒ์ ๋์์ ์ ์ฅํ๊ณ ๋์ค์ ๊ฒ์ํ ์ ์์ต๋๋ค. ๊ฐ์ฌ ํด์! ๊ทธ๋ฆฌ๊ณ ๋ค, ์ ๋ ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ ๋ถ์ผ์์ ์ด๋ณด์๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค. ๋ํ ๋ค๋ฅธ ๊ฒ์ ๋ฌผ์ด๋ด๋ ๋ ๊น์? Firebase๋ฅผ ํตํด ์ฌ๋ฌ ๊ธฐ๊ธฐ์ ๋์ผํ ์๋ฆผ์ ๋ฑ๋กํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์? ๊ทธ๋ฃน ์ฑํ ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๋ฃน ์ฑํ ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ ๋ ฅํ๋ฉด ๊ทธ๋ฃน์ ๋ชจ๋ ์ฌ๋์ด ๊ทธ๊ฒ์ ๋ฐ์ต๋๋ค. ์ด ํ์์ ์ฌ์ฉํ์ฌ ์๋ฆผ์ ๋ฑ๋กํ๊ณ ์์ต๋๋ค.
๋ชธ = {
"๊ณต๊ณ ":{
"์ ๋ชฉ":"์ ๋ชฉ" ,
"body":"body"
,
},
"๋ฐ์ดํฐ":{
"param1" : "๊ฐ1"
},
"๋ฐ๋ ์ฌ๋": DeviceId
,
"์ฐ์ ์์": "๋์",
"restricted_package_name":""
}
let options = new HttpHeaders().set('Content-Type','application/json');
this.http.post("https://fcm.googleapis.com/fcm/send",body,{
headers: options.set('Authorization', 'key=),
})
์ฌ๊ธฐ์์ deviceId๋ฅผ "to" ์น์ ์ ์ ๋ฌํ๋ฉด ์ฅ์น๋ก ์ ์ก๋ฉ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ์ฌ๋ฌ deviceId๋ฅผ ์ ๋ฌํ ์ ์์ต๋๊น?
@nikrhes ๋ฉํ ๋ฐ์ดํฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
window.FirebasePlugin.onNotificationOpen().subscribe((๋ฐ์ดํฐ) => {
if (data.tap) {
// ์๋ฆผ์ ํญํ๋ ์ฌ์ฉ์
} ๋ ๋ค๋ฅธ {
// ์ฑ์ด ํฌ๊ทธ๋ผ์ด๋์์ ์คํ ์ค์
๋๋ค.
}
});
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์คํ์ง ์์ง๋ง ์ด์ ๋ํ ๋ค์ํ ์ค๋ ๋๋ฅผ ํตํด ๋ช ๋ฌ ๋์ ๋ต์ ์ฐพ๊ณ ์์ต๋๋ค. ๋ถ๋ช ํ ๋งํด์, ๋ฌธ์ ๋ ์ฑ์ด ์์ ํ ์ข ๋ฃ/๊บผ์ง/์ข ๋ฃ๋ iOS์ ๊ฒฝ์ฐ ํนํ onNotification์ด ์คํ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฆผ์ด ์์ ์ฑ์ ์ฝ๋ ๋ถํ ํ์ง๋ง ๊ธฐ๋ฅ์ด ์คํ๋์ง ์๊ณ ํ์ด๋ก๋๊ฐ ์ ๋ฌ๋์ง ์์ต๋๋ค.
@heidji - ์๋ฒ์ ํธ์ ์ด๋ฒคํธ๋ฅผ ์ ์ฅํ๊ณ ์ฝ์๋์ง ํ์ธํ๋ ์๋ฃจ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ์ฑ์๋ ์ด๊ฒ์ด ์๋ํ์ง ์๋ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค์ด ๋งํ๋ฏ์ด ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด๊ฒ์ด ํด๊ฒฐ์ฑ ์ด ์์ด์ผ ํ๋ ์ค์ํ ํ๋์ผ๋ก ๋ณด์ธ๋ค๋ ๊ฒ์ ๋๋ค.
@wwwguy ๋ด ์๋ฃจ์
์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋๋๋ค. ํฌ๋ ์๋ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ๋ ํ์ค ๊ดํ์
๋๋ค.
์๋ฆผ ํ๋ ์ค์ ์์กดํ ์ ์์ผ๋ฉฐ ์ด๋ ๋ณด์ฅ๋ ์ด๋ฒคํธ๊ฐ ์๋๋๋ค. ๋ด ๋ง์ ๋ด xiaomi ์ ํ์์ facebook ์๋ฆผ์ ๋๋ฅผ ๋ ์ฑ์ด ์ด๋ฆฌ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
๋ค ์ดํดํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์ํ ํด๋ผ์ด์ธํธ๋ฅผ ์ํด ์์ญ ๊ฐ์ ์ฑ์ ๋ฐฐํฌํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ์ฑ์์๋ฟ๋ง ์๋๋ผ ์๋ฒ์์ ์๋ฆผ "์ฝ๊ธฐ"๋ฅผ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ณ ๋ คํด์ผ ํ ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ฆ, ๋จ์ํ ์๋ฆผ์ด ์๋๋ผ ํด๋ฆญํ๋ฉด ์ฑ ๋ด์์ ํน์ ๊ธฐ๋ฅ์ ์ง์ํ๋ ํ์ด๋ก๋๋ฅผ ์ ๋ฌํ๋ ์๋ฆผ์ ๋๋ค. ํ์ด์ค๋ถ์ ์ฐ๋ ๊ธฐ๋ค. ๋ชจ๋๊ฐ ์ด๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ FB ์๋ฆผ์ ๋จ์ํ ์๋ฆผ(์ฑ ๋ด๋ถ์ ์์นด์ด๋ธ ๋ชฉ๋ก์ ํ์๋จ)์ด๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋ค์ ๋ณธ์ง์ ์ผ๋ก ๊ธฐ๋ฅ์ ์ด์ง ์์ต๋๋ค. ์ฆ, ํน์ ์ ํ์ FB ์๋ฆผ์ ํด๋ฆญํ๋ฉด ์ฑ์ ์ด๊ณ ํน์ ์ฅ์๋ก โโ์๋ดํด์ผ ํ๋ ํน์ ์ ํ์ด ์์ต๋๋ค.
์ด์จ๋ ... ์ ๋ ํฐ ์ฒ ํ์ ํ ๋ก ์ ์ฐธ์ฌํ๊ธฐ ์ํด ํฌ์คํ ์ ํ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฌ๋ ํ์คํ ์ฐ๋ฆฌ ๋ชจ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ ์ ์์ต๋๋ค.
์๋๋ก์ด๋ ์คํ ์ฑ = WORKS
iOS ์คํ ์ฑ = WORKS
์๋๋ก์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฑ = WORKS
iOS ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฑ = WORKS
์ข
๋ฃ๋ ์ฑ์์ Android ์ฝ๋ ๋ถํ
= ์๋
์ข
๋ฃ๋ ์ฑ์์ iOS ์ฝ๋ ๋ถํ
= ์๋ํ์ง ์์
...ํ๋ฌ๊ทธ์ธ์ ์๋๋ ๋์์ธ์ด ์๋๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ํด๊ฒฐํ์ง ๋ชปํ ๋ฒ๊ทธ(์๋ง๋ ์ด๋ฌํ ๋ค์ํ ์ค๋ ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ฌธ์ ๋ฅผ ์๋ชป ์ง๋จํ๋ ํผ๋์ผ๋ก ์ธํด) ๋๋ PUSH ๋ณธ๋ฌธ์ ์ ๋ฌ๋ ๋ณ์ ๋๋ xCode์์ ์ปดํ์ผ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ฒ์ ๋๋ค. ์ด ๋์์ ์ ๋ฐํฉ๋๋ค.
๊ฐ๋ฐ์๊ฐ ํ๋ฌ๊ทธ์ธ์ ๋ํ ๋ฒ๊ทธ ์์ ์ ์ ์ณ๋๊ณ ... ์ด์ ๋ํ ์๋ ์ฝ๋ ์์ ์ ๋ถ๋ฆฌํ ์ ์๋ ์ฌ๋์ด ์์ต๋๊น?
์์งํ iOS์ ์ฝ๋ ๋ถํ
์๋ฆผ์ 100% ํจ๊ณผ๊ฐ ์์ต๋๋ค. ๋๋ onNotificationOpen์ด ๊ฑฐ๊ธฐ์์ ์๋ํ์ง ์์๊ณ webintent๊ฐ iOS์ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋๋ก์ด๋์ฉ์ผ๋ก๋ง webintent ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ต๋๋ค.
๋ด ์ค์ ์ ๋ํ ์ธ๋ถ ์ ๋ณด๊ฐ ํ์ํ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Firebaseํ๋ฌ๊ทธ์ธ.์๋ฐ