Titaniumã¢ããªã§ããã·ã¥éç¥(Push Notification)【iOSç】
ã¢ããªå´ã«ããã·ã¥éç¥ãããã¨èª¿æ»ããã¨ãã®è¦æ¸。ã¾ãã¯iOSãã。
éçºç°å¢: Mac OS X 10.9.4, Titanium SDK 3.3.0.GA
ãµã¼ãã¼:CentOS 6.5, PHP 5.4.32
åèãµã¤ã
- Subscribing to push notifications - Titanium 3.X - Appcelerator Docs
- pushéç¥ã«ã¤ã㦠| Don't Fall - Titanium Mobileã¦ã¼ã¶ã¼ä¼ãµãã¼ãBBS
- Apple Push Notification Services in iOS 6 Tutorial: Part 1/2 | Ray Wenderlich
ç®æ¬¡
- APNsã¨ã®éä¿¡ä¸æºå。証ææ¸ç½²åè¦æ±(CSR)ãä½æ
- iOS Dev Centerã§Push Notificationå¯è½ãªApp IDãä½æ
- App IDã¨è¨¼ææ¸ç½²åè¦æ±ãæåºãã¦è¨¼ææ¸ãåå¾
- Linuxãµã¼ãã¼ã§ä½¿ããããããã«PEMãã©ã¼ãããã«å¤æ
- ããã·ã¥éç¥ãåãåãããã¤ã¹ç¨ã«Provisioning Profileä½æ
- ã¢ããªã«ããã·ã¥éç¥ãããã¨ãã®åä½ãè¨è¿°
- ãµã¼ãã¼ããéç¥ãã¹ã
ï¼.APNsã¨ã®éä¿¡ä¸æºå。証ææ¸ç½²åè¦æ±(CSR)ãä½æ
iOSã®å ´åã¯Apple Push Notification service(APNs) ã¸ããã·ã¥éç¥ãããæ å ±ãéãã¨å端æ«ã«èªåã§ããã·ã¥ãã¦ããã。
APNsããä¿¡é ¼ãã¦ãããããã«ç½²åè¦æ±ãæåºãã¦、ç½²å(ãµã¤ã³)ãã¦ããã£ã証ææ¸ãåå¾ããå¿ è¦ããã。
ã¾ãã¯Macä¸ã§è¨¼ææ¸ç½²åè¦æ±(CSR)ãä½ã。
- Keychain Accessãèµ·å
- Keychan Access → Certificate Assistant → Request a Certificate From a Certificate Authority...ãé¸æ
- 「User Email Address」「Common Name」ãå ¥åãã¦「Saved to disk」ãé¸æãã¦Continue.
ãã¹ãã¬ã¼ãºãå ¥å
å®éã¯Linuxãµã¼ãã¼ããAPNsã«ã¢ã¯ã»ã¹ããã®ã§、証ææ¸ç½²åè¦æ±(CSR)ãä½æããéç¨ã§ä½ãããç§å¯éµãã¨ã¯ã¹ãã¼ããã¦ãã。
Keychain Accessã®「Keys」ãè¦ãã¨、ãã£ãä½ã£ãCommon Nameã§ç§å¯éµ(private key)ãããã¯ã。
- å³ã¯ãªãã¯ãã¦Exportãé¸æ
- 「.p12」ãé¸æããã¦ãããã¨ã確èªãã¦Save.
- ãã¹ã¯ã¼ããå ¥å
ãã®p12ãã¡ã¤ã«ã¯ãµã¼ãã¼ã«ç½®ãã¦ãã。
ï¼.iOS Dev Centerã§Push Notificationå¯è½ãªApp IDãä½æ
Xcodeãèªåçæãã「Xcode iOS Wildcard App ID」ã¯Push Notificationã§ããªãã®ã§App IDãæ°è¦ä½æãã。
iOS Dev CenterããProvisioning Profile → Certificates, Identifiers & Profiles → Identifiersãé¸æ。
- 「+」ãã¯ãªãã¯
- 「Push Notifications」ããã§ãã¯ãã¦Continue.
ï¼.App IDã¨è¨¼ææ¸ç½²åè¦æ±ãæåºãã¦è¨¼ææ¸ãåå¾
iOS Dev Centerã®Certificatesãé¸æ。
- 「+」ã§æ°è¦ä½æ。
- éçºç¨ã®å ´åã¯「Apple Push Notification service SSL (Sandbox)」ãé¸æ
- App IDã¯ãã£ãä½ã£ãã®ãé¸æ
- CSRãä½ã£ãã®ãé¸æ
- Continueããã¨ããã«è¨¼ææ¸ãçºè¡ããã。
çºè¡ããã証ææ¸ããã¦ã³ãã¼ããã¦ä¿å。
ï¼.Linuxãµã¼ãã¼ã§ä½¿ç¨ããããã«PEMãã©ã¼ãããã«å¤æ
ããã·ã¥éç¥ãããµã¼ãã¼(CentOS 6.5)ã«ãã¡ã¤ã«ã転éãã¦PEMãã¡ã¤ã«ãä½ã。
# cd apns/
証ææ¸ãPEMã«å¤æ
# openssl x509 -in aps_development.cer -inform der -out 2014hoge_cer.pem
ç§å¯éµãPEMã«å¤æ
# openssl pkcs12 -nocerts -in hoge.p12 -out hoge_key.pem
p12ãä½æããã¨ãã®ãã¹ã¯ã¼ãã¨æ°ãããã¹ãã¬ã¼ãºãå ¥å
ãã¹ãã¬ã¼ãºã解é¤
# openssl rsa -in hoge_key.pem -out hoge_key-nopass.pem
ï¼ã¤ã®ãã¡ã¤ã«ãçµå
# cat 2014hoge_cer.pem hoge_key-nopass.pem > apns.pem
ï¼.ããã·ã¥éç¥ãåãåãããã¤ã¹ç¨ã«Provisioning Profileä½æ
iOS Dev Centerã®Provisioning Profilesãã
- 「+」ã§æ°è¦ä½æ
- éçºç¨ãªã「iOS App Development」
- ãã£ãä½ã£ãApp IDãé¸æ
- ã¢ããªç¨è¨¼ææ¸ãé¸æ
※ãã£ãä½ã£ãã®ã¯APNsç¨è¨¼ææ¸ãªã®ã§ããã§ã¯è¡¨ç¤ºãããªã。 - ããã¤ã¹é¸æ
- åãããããååã§ç»é²
ãã¦ã³ãã¼ãããªãã¦ã、Xcodeãéãã¦
Xcode → Preferences... → Accounts → View Details...
ã§æ´æ°ããã¨åæããã。
ï¼.ã¢ããªã«ããã·ã¥éç¥ãããã¨ãã®åä½ãè¨è¿°
Titaniumã®å ¬å¼ãµã¤ããåèã«ã¢ããªãèµ·åããã¨ãã«ä¸è¨ã³ã¼ããå®è¡ãã。
Ti.Network.registerForPushNotifications({
// Specifies which notifications to receive
types: [
Ti.Network.NOTIFICATION_TYPE_BADGE,
Ti.Network.NOTIFICATION_TYPE_ALERT,
Ti.Network.NOTIFICATION_TYPE_SOUND
],
success: function(e) {
alert('Success: ' + JSON.stringify(e));
console.log(e);
},
error: function(e) {
console.log(e);
},
callback: function(e) {
alert('Received push: ' + JSON.stringify(e));
console.log(e);
}
});
å®æ©ããã¤ã¹ã§ã¢ããªãå®è¡ããã¨、「ããã·ã¥éç¥ã許å¯ãã¾ãã?」ã¨èãã¦ãã。許å¯ããã¨「success」ããããã£ã«ã»ããããé¢æ°ãå®è¡ããã¦ããã¤ã¹ãã¼ã¯ã³ãåå¾ã§ãã。
ããã·ã¥éç¥ããã«ã¯ãã®ããã¤ã¹ãã¼ã¯ã³ãæå®ããå¿ è¦ãããããã。
ã¤ã¾ãå ¨ã¦ã®ç«¯æ«ã«ããã·ã¥éç¥ããã«ã¯、å ¨ã¦ã®ããã¤ã¹ãã¼ã¯ã³ãã«ã¼ãããå¿ è¦ããã。
ï¼.ãµã¼ãã¼ããéç¥ãã¹ã
ãã£ãåå¾ããããã¤ã¹ãã¼ã¯ã³åãã«ããã·ã¥éç¥ãã¦ã¿ã。
PHPã§ã¯、ApnsPHPãç°¡åã§ä¾¿å©。
- duccio/ApnsPHP - GitHub
- apns-php - PHP Apple Push Notification & Feedback Provider - Google Project Hosting
ãã¦ã³ãã¼ãããsample_push.phpãåèã«。
require_once './ApnsPHP/Autoload.php';
$push = new ApnsPHP_Push(
ApnsPHP_Abstract::ENVIRONMENT_SANDBOX,
'./apns.pem'
);$push->connect();
$message = new ApnsPHP_Message('ããã¤ã¹ãã¼ã¯ã³');
$message->setText('Hello APNs-enabled device!');
$message->setSound();
$message->setExpiry(30);
$push->add($message);
$push->send();
$push->disconnect();
ããããµã¼ãã¼ä¸ã§å®è¡ããã¨ãã£ãæ¸ãã「callback」ããããã£ã®é¢æ°ãå®è¡ãããã¯ã。
次åã¯Android端æ«åãã«ããã·ã¥éç¥ããæ¹æ³ã調æ»ãã。
< Related Posts >