1. ํ๋ก์ ํธ ํ๊ฒฝ
- html ๋ฒ ์ด์ค๋ก ํ๋ก ํธ์์ Vuejs ์ฌ์ฉ ์ค
- Vuejs ๋ฒ์ 2.6.14
- axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ 0.26.1
2. ๋ฌธ์ ์ํฉ
- axios ๋ฅผ ์ด์ฉํ์ฌ ajax ํต์ ์ backend ์ ์งํ.
comm.post({
context: 'common_web',
url: "/push/token/save",
params: {
pushToken: token,
mobileOs: comm.mobile.os
}
}, function (data) {});
์ ์ฝ๋๋ /common_web/push/token/save URL ๋ก POST ์์ฒญ์ ๋ณด๋ด๋ ajax ์ ์ ํจ์์ด๋ค.
ํด๋น ํต์ ์ ์คํํ์์ ๋, Response ๋ด์ฉ์ด ์์ ์๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
ํน์ง์ผ๋ก๋ Response ์ ๋ด๊ฒจ์ค๋ ๋ด์ฉ ์์ฒด๊ฐ ์์ผ๋ฉฐ
axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ response ์ํฉ์์๋ 'Network Error' ๋ผ๊ณ ๋ง ๋์จ๋ค.
ํด๋น ๋ฌธ์ ๊ฐ ๋ฐ์๋๋ ํน์ ์ง์ ์ ๋ฐ๊ฒฌํ๊ธฐ ํ๋๋ฉฐ, ํด๋น URL์ Response ๋ํ
200 OK ๋ฅผ ๋ฌด์กฐ๊ฑด ๋ฆฌํดํ๋ URL ์์๋ ๋ถ๊ตฌํ๊ณ Network Error ๊ฐ "IOS ์ฑ(์น๋ทฐ์ฌ์ฉ)" ์ํฉ์์๋ง ๋ฐ์ํ๋ค.
3. ๋ฌธ์ ํด๊ฒฐ ์๋
Google ์ ๊ฒ์ ์, ์๋์ ๊ฐ์ด ๊ฒ์ํ๋ค.
๋ฌธ์ ๋ฅผ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ, axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ชฝ์์๋ ์ฌ๋๋ค์ด ์ง์์ ์ผ๋ก ๋ฌธ์ ์ ๊ธฐ๋ง ํ ๋ฟ, ์ด๋ ๋ค ํ ํด๊ฒฐ์ฑ ์ด ์์ผ๋ฉฐ
IOS12 ๋ถํฐ ์ง์์ ์ผ๋ก ๋ฐ์ํ ๋ฌธ์ ์์ ํ์ ํ ์ ์๋ค.
ํด๋น ๊ฒ์ ๊ฒฐ๊ณผ ๋ด์์ ๊ฒฐ๊ตญ ํด๊ฒฐ์ฑ ์ผ๋ก๋ ์๋ฒฝํ์ง ์์ง๋ง
axios ๋ชจ๋ ๋์ ๋ฌธ์ ๊ฐ ์๋ ajax ํต์ ์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์ง์ ๊ตฌํํ ๊ฒ์ ๊ถ๊ณ ํ๋ค.
4. ํด๊ฒฐ
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-type', 'application/json');
xhr.send(JSON.stringify(params));
xhr.onload = function () {
// do something to response
console.log("setPushToken result : " + this.responseText);
};
์์ ๊ฐ์ด ํด๋น URL๋ก POST ์์ฒญ์ Xhr Request ๋ก ๋ณด๋ด๋ ํจ์๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ์๋ค.
์ต์ด ์ธ๊ธํ ๋ฌธ์ ๋ ํด๊ฒฐ ๋์๋ค.
๋ง์ฝ ์ ๊ท ์ฌ์ ์ด๋ ๊ธฐํ ๋ค๋ฅธ ํ๋ก์ ํธ์์ IOS ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ์ง์ํ๋๋ก ํ๋ ํ๋ก์ ํธ๊ฐ ์๊ณ
ํ๋ก ํธ์์ axios ๋ชจ๋์ ์ฌ์ฉํ๋ค๋ฉด, ์ ์ฌํญ์ ์ถฉ๋ถํ ๊ณ ๋ คํด์ฃผ์ด์ผ ํ๋ค.
๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๊ฒ ์ง๋ง ์๋ ๋ฐฉ๋ฒ ์ ๋๊ฐ ์ฐ์ ํ์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ค.
1. ios ์ผ๋๋ง ๊ตฌ๋ถ์ ์ฃผ์ด, ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ตฌ๊ฐ์ ์ ์ฒ๋ผ ์๋ก ์ ์ํ์ฌ ํต์ ํ๋ค.
2. ๊ณตํต ajax ํต์ ๊ตฌ๊ฐ ํจ์๋ฅผ ์ก์ ๋, axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ค.
๋๊ธ