๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๋ฐฑ ํ‚ค (backkey)

๐Ÿ”” ์ตœ์‹ ํ™” ์ผ์ž: 2025-02-10

Android-Only

๊ฐœ์š”โ€‹

backkey ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” Android ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐฑ ํ‚ค๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๋ฐฑ ํ‚ค ๋™์ž‘์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ง€์ • ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ ์Šคํƒ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ข ์ฐธ๊ณ :
๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ๋Š” FILO(First In Last Out) ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
์ฆ‰, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์ด๋ฒคํŠธ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
โš ๏ธ ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” Android์—์„œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.


๋ฉ”์„œ๋“œ ๋ชฉ๋กโ€‹

๋ฉ”์„œ๋“œ์„ค๋ช…์ถ”๊ฐ€๋œ ๋ฒ„์ „
addEvent(event, eventId?)Android ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.ver.1.2.0
clearEvent()๋ชจ๋“  ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.ver.1.2.0
getLastEvent()๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ฑ๋ก๋œ ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ ID๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.ver.1.2.0
removeEvent(eventId?)ํŠน์ • ์ด๋ฒคํŠธ ID ๋˜๋Š” ๋งˆ์ง€๋ง‰ ์ด๋ฒคํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.ver.1.2.0

๋ฉ”์„œ๋“œ ์ƒ์„ธโ€‹

addEvent(event: (eventId: string) => void, eventId?: string): stringโ€‹

  • since ver.1.2.0

์„ค๋ช… (addEvent)โ€‹

Android์˜ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐฑ ํ‚ค๊ฐ€ ๋ˆŒ๋ ธ์„ ๋•Œ ํ˜ธ์ถœ๋  ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒคํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ FILO(First In Last Out) ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์ด๋ฒคํŠธ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ (addEvent)โ€‹

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜ ์—ฌ๋ถ€์„ค๋ช…
event(eventId: string) => voidโœ…๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ ํ•จ์ˆ˜
eventIdstring (optional)โŒํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์œ  ID (๊ธฐ๋ณธ๊ฐ’: ์ž๋™ ํ• ๋‹น)

๋ฐ˜ํ™˜ ๊ฐ’ (addEvent)โ€‹

ํƒ€์ž…์„ค๋ช…
string๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ์˜ eventId๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ (addEvent)โ€‹

// ์ด๋ฒคํŠธ ID๋ฅผ ๋”ฐ๋กœ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ 1๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์•„์ด๋””๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
Nachocode.backkey.addEvent(eventId => {
console.log('Back key pressed.');
console.log(`์ด๋ฒคํŠธ ID: ${eventId}`); // ์˜ˆ: "1"
});
// ํŠน์ • ์ด๋ฒคํŠธ ID๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
Nachocode.backkey.addEvent(eventId => {
console.log('Back key pressed.');
console.log(`์ด๋ฒคํŠธ ID: ${eventId}`); // "sample"
}, 'sample');

clearEvent(): voidโ€‹

  • since ver.1.2.0

์„ค๋ช… (clearEvent)โ€‹

๋ชจ๋“  ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ด์ „์— ๋“ฑ๋ก๋œ ๋ชจ๋“  ์ด๋ฒคํŠธ๊ฐ€ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜ ๊ฐ’ (clearEvent)โ€‹

ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ (clearEvent)โ€‹

// ๋ฐฑํ‚ค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ๋กํ•œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ „๋ถ€ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
Nachocode.backkey.clearEvent();

getLastEvent(): stringโ€‹

์„ค๋ช… (getLastEvent)โ€‹

๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ฑ๋ก๋œ ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ์˜ ID๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜ ๊ฐ’ (getLastEvent)โ€‹

ํƒ€์ž…์„ค๋ช…
string๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ์˜ eventId

์‚ฌ์šฉ ์˜ˆ์ œ (getLastEvent)โ€‹

// ์ฒซ ๋ฒˆ์งธ ๋ฐฑํ‚ค ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
Nachocode.backkey.addEvent(eventId => {
console.log('Back key pressed.');
console.log(eventId); // sample1
}, 'sample1');
// ๋‘ ๋ฒˆ์งธ ๋ฐฑํ‚ค ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
Nachocode.backkey.addEvent(eventId => {
console.log('Back key pressed.');
console.log(eventId); // sample2
}, 'sample2');
// ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ID๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
const lastEventId = Nachocode.backkey.getLastEvent();
console.log(`๋งˆ์ง€๋ง‰ ์ด๋ฒคํŠธ ID: ${lastEventId}`); // "sample2"

removeEvent(eventId?: string): stringโ€‹

  • since ver.1.2.0

์„ค๋ช… (removeEvent)โ€‹

ํŠน์ • ๋ฐฑ ํ‚ค ์ด๋ฒคํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • eventId๊ฐ€ ๋ช…์‹œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์ด๋ฒคํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • ํŠน์ • eventId๋ฅผ ์ œ๊ณตํ•˜๋ฉด ํ•ด๋‹น ์ด๋ฒคํŠธ๋งŒ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • ํ™œ์šฉ ์˜ˆ์‹œ : modal์„ ๋ฐฑํ‚ค๋กœ ๋Œ ์ˆ˜ ์žˆ๋„๋ก closeํ•จ์ˆ˜๋ฅผ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋“ฑ๋ก์„ ํ•ด๋‘์—ˆ๋Š”๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฑ ํ‚ค๊ฐ€ ์•„๋‹Œ x ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, x ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋“ฑ๋ก๋œ ๋ฐฑํ‚ค ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ (removeEvent)โ€‹

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜ ์—ฌ๋ถ€์„ค๋ช…
eventIdstring (optional)โŒ์ œ๊ฑฐํ•  ์ด๋ฒคํŠธ์˜ ID (๊ธฐ๋ณธ๊ฐ’: ๊ฐ€์žฅ ์ตœ๊ทผ ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ)

๋ฐ˜ํ™˜ ๊ฐ’ (removeEvent)โ€‹

ํƒ€์ž…์„ค๋ช…
string์ œ๊ฑฐ๋œ ์ด๋ฒคํŠธ์˜ eventId๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์ œ (removeEvent)โ€‹

// ์ด๋ฒคํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ถ”๊ฐ€ํ•œ ๊ฒฝ์šฐ, ๊ฐ€์žฅ ์ตœ๊ทผ ์ด๋ฒคํŠธ๋ถ€ํ„ฐ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
Nachocode.backkey.addEvent(eventId => {
console.log('Back key pressed.');
}, 'event1');

Nachocode.backkey.addEvent(eventId => {
console.log('Back key pressed.');
}, 'event2');

// ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์ด๋ฒคํŠธ("event2")๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
const removedEvent = Nachocode.backkey.removeEvent();
console.log(`์ œ๊ฑฐ๋œ ์ด๋ฒคํŠธ ID: ${removedEvent}`); // "event2"
// ํŠน์ • ์ด๋ฒคํŠธ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋“ฑ๋ก
Nachocode.backkey.addEvent(eventId => {
console.log('Back key pressed.');
}, 'sample');

// ์ด๋ฒคํŠธ ID๋กœ ๋“ฑ๋ก๋œ ํŠน์ • ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
Nachocode.backkey.removeEvent('sample');