ä¸.åæåå¤
1.ä»Keychainä¸éæ©Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority...
å¡«åUser email(appleå¼åè
å¸å·)/Common name(keyçåå)ï¼éæ©Save to Diskï¼ä¿åå°Desktop,ä¸å®è¦æ个å¤éæ¡åºæ¥çï¼å®æåä¼å¨é¥å串ç§å å
¥2个å¯é¥
2.åå®ä¸ä¸æ¥ï¼Keychainä¼å¢å ä¸ä¸ªkey,å¨Keychainä¸æ¾å°Keyæ ï¼å°1ä¸çæçprivate key导åºä¸º.p12æ件ï¼æ¯å¦Test_Push_Notifier_PrivateKey.p12
3.ç»å½developer.apple.comçiOS portalï¼ç³è¯·AppIDï¼éè¦å
·ä½å°com.XXX.XXXï¼å³ä¸å
许æåä¸ä¸ªå段为模ç³å¹é
éå对该AppIDè¿è¡é
ç½®ï¼éä¸Push Notificationï¼ä¸ä¼ åé¢çæçCSRæ件ï¼Portalä¼èªå¨çæaps_development.cerï¼ä¸è½½aps_development.cer
4.å¨Portalä¸çææ°çProvisionï¼å°AppIDéä¸ä¸ºcom.XXX.XXXï¼å¹¶ä¸è½½æ°çtest.mobileprovisionæ件ï¼å¹¶å¯¼å
¥å°Xcodeä¹ä¸
5.ç°å¨æ们æ两个æ件ï¼Test_Push_Notifier_PrivateKey.p12/aps_development.cerãæå¼ç»ç«¯ï¼ä½¿ç¨openssl对两个æ件è¿è¡å å¯ï¼
å å¯aps_development.cer:
openssl x509 -in aps_development.cer -inform der -out cer_dev.pem
å å¯Test_Push_Notifier_PrivateKey.p12
openssl pkcs12 -nocerts -in Test_Push_Notifier_PrivateKey.p12 -out key.pem
PHPæå¡ç«¯åå°ä¸¤è
å并ï¼
cat cer_dev.pem key.pem > Push_Notifier.pem
javaæå¡ç«¯è¦è½¬å为p12æ ¼å¼ï¼ç¨ä»¥ä¸å½ä»¤è½¬åï¼
openssl pkcs12 -export -in cer_dev.pem -inkey key.pem -out cred_dev.p12
6.æµè¯ApplePushServeræ£å¸¸ï¼
telnet gateway.sandbox.push.apple.com 2195
7.æµè¯å å¯è¯ä¹¦å·¥ä½æ£å¸¸ï¼
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert cer_dev.pem -key key.pem
äº.客æ·ç«¯å¼å
éè¦å®ç°ç代ç åè¦ççæ¹æ³
1.å¨AppDelegate.mä¸ä¿®æ¹-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
å½æ°ä½ä¸æ·»å ï¼
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];
2.å¨AppDelegate.mä¸æ·»å ä¸åå½æ°ï¼
-(void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"æç设å¤ID: %@", deviceToken);
}
-(void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@"注å失败ï¼æ æ³è·å设å¤ID, å
·ä½é误: %@", error);
}
3.è¿æ¥è®¾å¤ï¼è¿è¡ä¸æ¬¡ç¨åºï¼è·å¾deviceTokenå·ç ï¼åºè¯¥æ¯64个16è¿å¶çæ°ï¼è®°ä¸æ¥ã
4.å¯å¨æ¹å¼åè°ç¨æ¹æ³
ç¨åºå¼å¯ --> åå°è¿è¡-->notification --> didReceiveRemoteNotification
ä¸æ´æ¹Applicationçbadge Number
ç¨åºå¼å¯ --> åå°è¿è¡ -->notification --> Appåºæ示,并æ´æ¹applicationçbadge Number --> ç¹åºç¨ç¨åºå¾æ --> applicationDidBecomeActive
ç¨åºå¼å¯ --> åå°è¿è¡ -->notification --> Appåºæ示,并æ´æ¹applicationçbadge Number --> ç¹ä¸é¢åºç°çæ示ï¼æè
ä¸æèåæ示ï¼æè
ç¹å»alertæ¡çç¡®å®--> didReceiveRemoteNotification --> applicationDidBecomeActive
ç¨åºå
³é -->notification --> Appåºæ示,并æ´æ¹applicationçbadge Number --> ç¹ä¸é¢åºç°çæ示ï¼æè
ä¸æèåæ示ï¼æè
ç¹å»alertæ¡çç¡®å®--> didFinishLaunchingWithOptions --> applicationDidBecomeActive
å¯ä»¥å¨didFinishLaunchingWithOptionsä¸å¤ææ¯å¦æ¯apnsæ¥å¯å¨ç
[cpp] view plain copy print?
NSDictionary* pushInfo = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
//è·åæ¨é详æ
NSString *pushInfo = [[NSString stringWithFormat:@"%@",[pushInfo objectForKey:@"aps"]];
å¨ç¨åºä¸å¦æè¦æ ¹æ®apnsä¿¡æ¯æ¥åä¿®æ¹ï¼å°±éè¦æ³¨æè¿æ ·çæµç¨ï¼æ¯ä¸ªå¯å¨æ¹å¼æè°ç¨çæ¹æ³æ¯ä¸åçã
ä¸.æå¡å¨ç«¯å¼å
æå¡å¨ç«¯ java第ä¸æ¹å¼å
https://github.com/notnoop/java-apnså.注æäºé¡¹
1.productionådeveloperçtokenæ¯ä¸ä¸æ ·çï¼éè¦ç¨ad hocæ¥betaæµè¯ä¸
2.è¦å°tokenä¸ä¼ ç»æå¡å¨ï¼æå¡å¨è¦ç¨,æ¤å¤è¹æä¹ä¸è½ä¿è¯tokenä¼ä¿è¯ä¸åï¼æ以æ好å°ä¿çè¿é¿çtokenå é¤ååæ¥æ¬¡æå¡å¨ã
3.åå¸åè¦å°pushå°åæ¹æ
æµè¯ç¨:gateway.sandbox.push.apple.com 2195
åå¸ç¨:gateway.push.apple.com 2195
4.ä¸è¦è¿·ä¿¡APNSï¼è¹æä¸æ¯å¿«éå
¬å¸ä¿è¯æ¯ä¸ªç¨æ·ç¾æ¶ã
5.æ¥å2196ç端å£æ¯è¹ææ¯æ¬¡pushåä¼è®°å½ä¸ç¨æ·æ¶å°ç¶åµï¼å¦æç¨æ·å·²ç»æ²¡æå®è£
è¿ä¸ªåºç¨äºï¼åä¼å¨æå¡å¨ä¿çä¿¡æ¯ï¼çæå¡ç«¯è®¿é®2196端å£ï¼ä¼å°è¿äºè®¾å¤TOKENä¼ éè¿æ¥ï¼è¿æ ·æå¡ç«¯å¯ä»¥å°è¿äºè®¾å¤ç»disableæ