Tools Developer Guide - ONE-store/inapp-sdk GitHub Wiki

๊ฐœ์š”

๋ณธ ๋ฌธ์„œ๋Š” ์›์Šคํ† ์–ด ์•ฑ์˜ URL Scheme ์—ฐ๋™ ๋ฐ ๊ฐ์ข… API๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์›์Šคํ† ์–ด ์•ฑ URL Scheme ์—ฐ๋™

๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›์Šคํ† ์–ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚จ ํ›„ ํŠน์ • ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰์„ ์‹คํ–‰์‹œํ‚ค๋Š” URL scheme์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. http://, ftp://, market:// ๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ URL scheme์ด๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. URL scheme์„ ํ†ตํ•ด ์•ฑ์ด ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์•ฑ์ด๋‚˜ ์›นํŽ˜์ด์ง€์—์„œ ํ•˜์ดํผ๋งํฌ ํด๋ฆญ ์‹œ URL scheme์ด system์— ์ „๋‹ฌ๋จ
  • system์—์„œ ์ „๋‹ฌ๋œ URL scheme์„ ๋ณด๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์•ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธ
  • ํ•ด๋‹น URL scheme์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์•ฑ์ด ์žˆ๋‹ค๋ฉด ์•ฑ์„ ์‹คํ–‰์‹œํ‚ค๋ฉฐ ์ด URL์„ ํ•จ๊ป˜ ์ „๋‹ฌ
  • ์•ฑ์ด ์‹คํ–‰๋˜๋ฉด์„œ URL์— ํฌํ•จ๋œ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•ด์„œ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•จ

์›น ํŽ˜์ด์ง€์—์„œ URL scheme์„ ์ด์šฉํ•ด ์›์Šคํ† ์–ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ์›์Šคํ† ์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฏธ์„ค์น˜๋œ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌํ˜„์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋‹จ, Shorten URL ๋ฐฉ์‹์€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

URL scheme ๊ตฌ์„ฑ

๊ฐ ํ˜ธ์ถœ ๊ทœ๊ฒฉ ์ƒ์„ธ ๋‚ด์šฉ์€ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

์•ฑ/๊ฒŒ์ž„ ์ƒ์„ธํ˜ธ์ถœ

์ƒํ’ˆ๋ทฐ๋Š” product ID(์ƒํ’ˆID)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์›์Šคํ† ์–ด ํด๋ผ์ด์–ธํŠธ์—์„œ ํ•ด๋‹น ์ƒํ’ˆ์˜ ์ƒ์„ธ๋ณด๊ธฐ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ƒํ’ˆPID๋Š” ์›์Šคํ† ์–ด ์›นํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์ƒํ’ˆ์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, '๋“œ๋ž˜๊ณค์‚ผ๊ตญ์ง€'๋ผ๋Š” ๊ฒŒ์ž„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ๊ฒŒ์ž„์˜ ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ ํ›„ PC ๋ธŒ๋ผ์šฐ์ € ์ƒ๋‹จ์˜ URL์„ ํ™•์ธํ•˜์‹œ๋ฉด http://onestore.co.kr/userpoc/game/view?pid=0000722708์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ณด์ด๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ 0000722708์ด ์ด ๊ฒŒ์ž„์˜ ์ƒํ’ˆPID์ž…๋‹ˆ๋‹ค.

๊ทœ๊ฒฉ

onestore://common/product/{์ƒํ’ˆPID}

์ƒ˜ํ”Œ

onestore://common/product/0000252337

๊ฒ€์ƒ‰ํ˜ธ์ถœ

๊ฒ€์ƒ‰๋ทฐ๋Š” ์›์Šคํ† ์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ๊ฒ€์ƒ‰์–ด์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๊ทœ๊ฒฉ

onestore://common/search/{๊ฒ€์ƒ‰์–ด}

์ƒ˜ํ”Œ

onestore://common/search/๋„ค์ด๋ฒ„์•ฑ

์—…๋ฐ์ดํŠธ ์š”์ฒญ(์ž๋™์„ค์น˜)

์•ฑ/๊ฒŒ์ž„ ์ƒํ’ˆ์˜ ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ๋ฐ›์•„, ํ•ด๋‹น ์ƒํ’ˆ์ด ์ตœ์‹  ๋ฒ„์ „์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ํ•˜๋Š” ์ƒํ’ˆ์˜ PKG๋ช…๊ณผ ๋‹ค์šด๋กœ๋“œ ํ•  ์ƒํ’ˆ์˜ PKG๋ช…์ด ๋™์ผํ•œ ๊ฒฝ์šฐ์— ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ทœ๊ฒฉ

onestore://common/product/bg_update/{์ƒํ’ˆPID}

์ƒ˜ํ”Œ

onestore://common/product/bg_update/0000252337

Shorten URL๋กœ ์—ฐ๋™ํ•˜๊ธฐ

ProductID(์ƒํ’ˆPID)๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•ฑ ์ƒ์„ธํŽ˜์ด์ง€ ์—ฐ๋™ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP ๋žœ๋”ฉ ๋ฐฉ์‹์ด๋ฏ€๋กœ ์›์Šคํ† ์–ด ํด๋ผ์ด์–ธํŠธ ์„ค์น˜ ์œ ๋ฌด์— ๊ด€๊ณ„์—†์ด ๋ชจ๋‘ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. (์›์Šคํ† ์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋‹จ๋ง์—์„œ๋Š” ์›์Šคํ† ์–ด ๋ชจ๋ฐ”์ผ์›น์˜ ํ•ด๋‹น ์ƒํ’ˆ ์ƒ์„ธ๋ณด๊ธฐ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.)

๊ทœ๊ฒฉ

https://onesto.re/{์ƒํ’ˆPID}

์ƒ˜ํ”Œ

https://onesto.re/0000252337

๊ธฐ์กด ๊ทœ๊ฒฉ์˜ Redirects ์ฒ˜๋ฆฌ

๊ธฐ์กด์— ๊ฐ Store์—์„œ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋˜ ์—ฐ๋™ ๊ทœ๊ฒฉ์€ ์ž๋™์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์กด์— ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ์˜ ๊ฒฝ์šฐ, ๋ณ„๋„๋กœ ์ถ”๊ฐ€ ๊ฐœ๋ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด๊ทœ๊ฒฉ ๋ฆฌ ๋‹ค์ด๋ž™ํŠธ ์‹ ๊ทœ๊ทœ๊ฒฉ
๊ธฐ์กด์—ฐ๋™๊ทœ๊ฒฉ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹ ๊ทœ ๊ทœ๊ฒฉ

๋ ˆํผ๋Ÿฌ(referrer) ์ง€์› (ํŠธ๋ž˜ํ‚นํˆด ์ง€์›)

intent๋ฅผ ํ†ตํ•ด ๊ด‘๊ณ  ์„ฑ๊ณผ๋ฅผ ํฌํ•จํ•œ ๊ฐ์ข… ํ†ต๊ณ„ ์ˆ˜์ง‘์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ URL scheme์— referrer ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. AdBrix, TUNE, Adjust, AppsFlyer๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ํŠธ๋ž˜ํ‚นํˆด์—์„œ ๋ฐœํ–‰๋˜๋Š” measurement URL์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งˆ์ผ€ํŒ… ์„ฑ๊ณผ ์ธก์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ทœ๊ฒฉ

onestore://common/product/{์ƒํ’ˆPID}?referrer=(STRING) 

๋˜๋Š”

https://onesto.re/{์ƒํ’ˆPID}?referrer=(STRING) 

์ƒ˜ํ”Œ

onestore://common/product/0000652407?referrer=com.square_enix.android.finalfantasy_sp%26ck%3d5416300%26sn%3d17866395096%26cid%3d961204606_17866395096

๋˜๋Š” 

https://onesto.re/0000652407?referrer=com.square_enix.android.finalfantasy_sp%26ck%3d5416300%26sn%3d17866395096%26cid%3d961204606_17866395096


๊ด‘๊ณ  ์„ฑ๊ณผ ์ธก์ •์„ ์œ„ํ•ด ํŠธ๋ž˜ํ‚น ํˆด์—์„œ measurement URL์„ ๋ฐœ๊ธ‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋„ ์›์Šคํ† ์–ด ๋žœ๋”ฉ URL (onestore:// ๋˜๋Š” https://onesto.re ๊ทœ๊ฒฉ) ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ํ•˜๋ ค๋Š” ๊ด‘๊ณ  ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ์•ฑ/๊ฒŒ์ž„ ๋‚ด๋ถ€ ๊ด‘๊ณ ์ธ ๊ฒฝ์šฐ onestore:// ๋žœ๋”ฉ URL ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋ฉฐ, ์™ธ๋ถ€ ๋งค์ฒด(๊ด‘๊ณ  ๋„คํŠธ์›, DSP ๋“ฑ)์„ ํ†ตํ•œ ๊ด‘๊ณ  ์ง‘ํ–‰์ธ ๊ฒฝ์šฐ https://onesto.re ๋žœ๋”ฉ URL ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ด‘๊ณ ๋ฅผ ํด๋ฆญํ•˜๊ณ  ์›์Šคํ† ์–ด ์ƒํ’ˆ ํŽ˜์ด์ง€๋กœ ์ง„์ž…ํ•˜์—ฌ ์•ฑ/๊ฒŒ์ž„์„ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ, ํŠธ๋ž˜ํ‚น ํˆด์—์„œ ๋ฐœ๊ธ‰ํ•œ measurement URL์•ˆ์— ๋“ค์–ด์žˆ๋Š” referrer๋ฅผ ์›์Šคํ† ์–ด๊ฐ€ ๋‹ค์‹œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ 60์ผ๊นŒ์ง€์˜ look-back window๊ฐ€ ์ง€์›๋˜๋ฏ€๋กœ ์ง„ํ–‰ํ•˜๋ ค๋Š” ๋งˆ์ผ€ํŒ… ๋ชฉ์ ์— ๋งž๊ฒŒ ํŠธ๋ž˜ํ‚น ํˆด์—์„œ ์ ์ ˆํžˆ look-back window๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ง„ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ์›นํŽ˜์ด์ง€์—์„œ URL scheme ํ˜ธ์ถœ

html hyperlink reference๋กœ ์œ„์—์„œ ์ •์˜๋œ custom url์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น link ์„ ํƒ์‹œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ„๊ธฐํ•  ์ˆ˜ ์žˆ๋„๋ก html page๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์•ฑ ๋ฏธ์„ค์น˜ ์‹œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๊ตฌํ˜„

์•ฑ์ด ์žˆ์„ ๋•Œ๋Š” ๋ฐ”๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์—†์„ ๋•Œ๋Š” javascript timer๋ฅผ ์‚ฌ์šฉํ•ด setTimeout์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ, ๋ชจ๋ฐ”์ผ ์›น ํŽ˜์ด์ง€๋‚˜ ๊ตฌ๊ธ€ํ”Œ๋ ˆ์ด ๋“ฑ ๋‹ค๋ฅธ ์Šคํ† ์–ด๋กœ ๋ถ„๊ธฐ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (์•ฑ ๋ฏธ์„ค์น˜์‹œ, ํŽ˜์ด์ง€ ์ด๋™ ์ „์— ์ž ์‹œ ์˜ค๋ฅ˜ ํŒ์—…์ด ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ์•„๋ž˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๊ตฌ์„ฑ ์˜ˆ ์ž…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•œ iframe ์ฒ˜๋ฆฌ ๋“ฑ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. intent scheme์„ ์ด์šฉํ•˜๋ฉด ์ข€ ๋” ๋‹จ์ˆœํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


var url = "onestore://common/product/0000252337?view_type=1"; 
var ONEstoreUrl = "https://onesto.re/0000252337" 

function onClickApp(url) { 
    var clickedAt = +new Date; 
                                               
    AppCheckTimer = setTimeout(function() { 
    if (+new Date - clickedAt < 2000){ 
        if (window.confirm("์›์Šคํ† ์–ด ์ตœ์‹  ๋ฒ„์ „์ด ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. \n๋ชจ๋ฐ”์ผ์›น ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.")) 
        { location.href = ONEstoreUrl; } 
            }
    }, 1500);
}
    location.href = url; 

Server side API

packageName ์œผ๋กœ PID ๋ฐ ๋ฒ„์ „๋ช… ํ™•์ธํ•˜๊ธฐ

์ด๋ฏธ ์ƒํ’ˆ์„ ์ถœ์‹œํ•œ ์ƒํƒœ๋ผ๋ฉด ํŒจํ‚ค์ง€๋„ค์ž„ openAPI๋ฅผ ํ†ตํ•ด์„œ PID์™€ ๊ฐ์ข… ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ธ ๋‚ด์šฉ์€ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.

Request ๊ทœ๊ฒฉ

http://m.onestore.co.kr/mobilepoc/api/getAppVersion.omp?pkgNm={ํŒจํ‚ค์ง€๋„ค์ž„}&deviceModelCd={๋ชจ๋ธ๋ช…}&osVer={OS๋ฒ„์ „}

Request ์ƒ˜ํ”Œ

http://m.onestore.co.kr/mobilepoc/api/getAppVersion.omp?pkgNm=com.nhn.android.search&deviceModelCd=SM-N920S&osVer=6.0

Response ์ƒ˜ํ”Œ

{
    "menuId": "DP04202",
    "game": false,
    "result": {
        "desc": "success",
        "code": "000"
    },
    "verNm": "",
    "verCd": "",
    "topMenuId": "DP30",
    "topMenuNm": "์•ฑ",
    "menuNm": "์ •๋ณด/์ƒ์‹",
    "sellerNm": "NAVER Corp.",
    "prodId": "0000030320",
    "title": "๋„ค์ด๋ฒ„ - NAVER"
}