์์ฒด ์ฑ์ด ์๋ ์น์ฌ์ดํธ(๋ํธํ, ์ปค๋ฎค๋ํฐ ๋ฑ)๊ฐ ๊ณต์ฉ ์ฑ์ ํตํด ์ค๋งํธํฐ ํธ์ ์๋ฆผ์ ๋ฐ์กํ ์ ์๊ฒ ํด์ฃผ๋ ์๋น์ค์ ๋๋ค. ํํธ๋ ์น์ฌ์ดํธ์์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก์ ํตํด ํด๋น ์ฌ์ดํธ ํ์๋ค์๊ฒ ํธ์๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค.
2๋ ๊ฐ๊น์ด ์ด์์ ํด์์ผ๋ ๋ฉค๋ฒ๋ค ์ฌ์ ์ผ๋ก ์ธํด ์ฌ์ ์ ์ ๊ณ ์์ค๋ฅผ ์คํํ๊ธฐ๋ก ๊ฒฐ์ .
- ์ ํ (cikorea.net, [email protected]) โ ๊ธฐํ, ๋ฐฑ์๋
- ๋ถ์ํ์ (cikorea.net) โ Android, iOS
pushwing/
โโโ android/ # Android ํด๋ผ์ด์ธํธ ์ฑ (Eclipse ํ๋ก์ ํธ)
โโโ engine/ # RESTful API ์๋ฒ (์์ PHP)
โโโ web/ # ๊ด๋ฆฌ ์น์ฌ์ดํธ (CodeIgniter 2.x ๊ธฐ๋ฐ)
โโโ plgins/
โโโ codeigniter/ # CI์ฉ ํธ์ ๋ฐ์ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โโโ gnu/ # ๊ทธ๋๋ณด๋ ์ฐ๋ ํ๋ฌ๊ทธ์ธ
- GCM (Google Cloud Messaging) ๊ธฐ๋ฐ ํธ์ ์์
- ์ฑ ์ค์น ์ ํด๋ํฐ ๋ฒํธ + GCM registration ID๋ฅผ ์๋ฒ์ ๋ฑ๋ก
- ํธ์ ์์ ์ SQLite์ ์ ์ฅํ๊ณ ์๋ฆผ ํ์ (์๋ฆฌ/์ง๋ ์ค์ ๊ฐ๋ฅ)
- Google AdMob ๊ด๊ณ ํ์ฌ
์์ PHP REST API (CodeIgniter ๋ฏธ์ฌ์ฉ).
| ์๋ํฌ์ธํธ | ์ค๋ช |
|---|---|
sd |
๋๋ฐ์ด์ค ๋ฑ๋ก (ํด๋ํฐ๋ฒํธ + GCM ID) |
go |
์ฑ ์์ ์ ๊ด๊ณ on/off ํ๋๊ทธ ์กฐํ |
fd |
ํธ์ ๋ด์ฉ ์กฐํ |
nl / nv |
๊ณต์ง์ฌํญ ๋ชฉ๋ก / ์์ธ |
vr / cr |
๊ด๊ณ ๋ ธ์ถ / ํด๋ฆญ ๋ฆฌํฌํธ |
- CodeIgniter 2.x ํ๋ ์์ํฌ
- ํํธ๋ ์น์ฌ์ดํธ ๊ด๋ฆฌ, ๋ฌธ์ ์ ์, ํธ์ ๋ฐ์ก
push_waitํ ์ด๋ธ ํ ๋ฐฉ์์ผ๋ก iOS(APNS) ๋ฐ Android(GCM) ๋ฐ์ก- tank_auth ๊ธฐ๋ฐ ๊ด๋ฆฌ์ ์ธ์ฆ
ํํธ๋ ์น์ฌ์ดํธ์์ ํ ๋ฉ์๋๋ก ํธ์๋ฅผ ๋ฐ์กํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
$this->pushwing->send_push($hp, $subject, $contents, $url);
ํํธ๋ ์น์ฌ์ดํธ
โ pushwing ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก push_wait ํ
์ด๋ธ์ INSERT
โ /push/send_all ํฌ๋ก ์คํ
โ push_m ๋ชจ๋ธ์ด push_wait๋ฅผ ์ฝ์ด GCM/APNS ๋ฐ์ก
โ push_end ํ
์ด๋ธ๋ก ์ด๋ (๋ฐ์ก ๊ธฐ๋ก)
โ ์ฑ์ด ์์ โ ์๋ฆผ ํ์
| ๋ ์ด์ด | ๊ธฐ์ |
|---|---|
| Android ์ฑ | Java, GCM, Volley, AdMob, SQLite |
| REST API | PHP 5.x, MySQL |
| ์น ์๋ฒ | CodeIgniter 2.x, PHP, MySQL, tank_auth |
| iOS ํธ์ | APNS (์ธ์ฆ์ ๋ฐฉ์) |
| Android ํธ์ | GCM (๊ตฌ๋ฒ์ , ํ FCM์ผ๋ก ๋์ฒด๋จ) |
engine/eg.php ์์ DB ์ ์ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค.
$this->db = new MySQL('๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช ', '์์ด๋', '๋น๋ฐ๋ฒํธ', 'localhost');
web/application/config/database.php ์์ CodeIgniter DB ์ค์ ์ ํฉ๋๋ค.
web/application/models/push_m.php ์ init_curl() ์์ GCM API ํค๋ฅผ ์
๋ ฅํฉ๋๋ค.
$headers[] = 'Authorization:key=YOUR_GCM_KEY';
web/application/config/ios.php ์์ APNS ์ธ์ฆ์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํฉ๋๋ค.
web/apns-dev.pem, web/apns-pro.pem ์์น์ ์ธ์ฆ์๋ฅผ ๋ฐฐ์นํฉ๋๋ค.
push_wait ํ
์ด๋ธ์ ์์ธ ํธ์๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์กํ๋ ค๋ฉด ํฌ๋ก ์ ๋ฑ๋กํฉ๋๋ค.
* * * * * curl http://your-domain.com/push/send_all
plgins/codeigniter/pushwing/ ๋๋ ํ ๋ฆฌ๋ฅผ CI ํ๋ก์ ํธ์ ์ ์ฉํ๊ณ ์ค์ ํฉ๋๋ค.
// config/pushwing.php $config['pushwing_server'] = 'pushwing DB ์๋ฒ ์ฃผ์'; $config['pushwing_id'] = 'DB ์์ด๋'; $config['pushwing_password'] = 'DB ๋น๋ฐ๋ฒํธ'; $config['client_id'] = '๋ฐ๊ธ๋ฐ์ ํด๋ผ์ด์ธํธ ID';
- GCM์ 2019๋ ์ข ๋ฃ๋์ด FCM(Firebase Cloud Messaging) ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ด ํ์ํฉ๋๋ค.
engine/eg.php์ SQL ์ฟผ๋ฆฌ๋ ๋ณ์๋ฅผ ์ง์ ์ฐ๊ฒฐํ๋ฏ๋ก ์ด์ ์ SQL Injection ๋๋น๊ฐ ํ์ํฉ๋๋ค.- API ํค, DB ํฌ๋ฆฌ๋ด์ ๋ฑ ๋ฏผ๊ฐ ์ ๋ณด๋ ์์ค์ ์ง์ ํฌํจํ์ง ์๋๋ก ํ๊ฒฝ ๋ณ์๋ก ๋ถ๋ฆฌํ์ธ์.




