{"id":295,"date":"2013-03-09T22:17:37","date_gmt":"2013-03-09T22:17:37","guid":{"rendered":"49182f81e6a13cf5eaa496d51fea6406"},"modified":"2013-03-09T22:17:37","modified_gmt":"2013-03-09T22:17:37","slug":"","status":"publish","type":"post","link":"https:\/\/www.xiaobo.li\/notes\/archives\/295","title":{"rendered":"iPhone\u6d88\u606f\u63a8\u9001\u673a\u5236\u5b9e\u73b0\u4e0e\u63a2\u8ba8"},"content":{"rendered":"<p><span style=\"line-height:21px;font-family:verdana,'ms song',Arial,Helvetica,sans-serif;color:#393939;font-size:14px;\">.NET \u5f00\u6e90\u9879\u76ee\uff1a <\/p>\n<div>https:\/\/github.com\/Redth\/APNS-Sharp<\/div>\n<\/p>\n<p><\/span> <\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">Push\u7684\u539f\u7406\uff1a<\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">Push \u7684\u5de5\u4f5c\u673a\u5236\u53ef\u4ee5\u7b80\u5355\u7684\u6982\u62ec\u4e3a\u4e0b\u56fe<br style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\" \/><br \/>\n<a id=\"ematt:180\" href=\"\/notes\/content\/uploadfile\/201303\/f3cc1362838705.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/f3cc1362838705.jpg\" width=\"639\" height=\"90\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u56fe\u4e2d\uff0cProvider\u662f\u6307\u67d0\u4e2aiPhone\u8f6f\u4ef6\u7684Push\u670d\u52a1\u5668\uff0c\u8fd9\u7bc7\u6587\u7ae0\u6211\u5c06\u4f7f\u7528.net\u4f5c\u4e3aProvider\u3002 <br style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\" \/><br \/>\nAPNS \u662fApple Push Notification Service\uff08Apple Push\u670d\u52a1\u5668\uff09\u7684\u7f29\u5199\uff0c\u662f\u82f9\u679c\u7684\u670d\u52a1\u5668\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u4e0a\u56fe\u53ef\u4ee5\u5206\u4e3a\u4e09\u4e2a\u9636\u6bb5\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u7b2c\u4e00\u9636\u6bb5\uff1a.net\u5e94\u7528\u7a0b\u5e8f\u628a\u8981\u53d1\u9001\u7684\u6d88\u606f\u3001\u76ee\u7684iPhone\u7684\u6807\u8bc6\u6253\u5305\uff0c\u53d1\u7ed9APNS\u3002 <br style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\" \/><br \/>\n\u7b2c\u4e8c\u9636\u6bb5\uff1aAPNS\u5728\u81ea\u8eab\u7684\u5df2\u6ce8\u518cPush\u670d\u52a1\u7684iPhone\u5217\u8868\u4e2d\uff0c\u67e5\u627e\u6709\u76f8\u5e94\u6807\u8bc6\u7684iPhone\uff0c\u5e76\u628a\u6d88\u606f\u53d1\u5230iPhone\u3002 <br style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\" \/><br \/>\n\u7b2c\u4e09\u9636\u6bb5\uff1aiPhone\u628a\u53d1\u6765\u7684\u6d88\u606f\u4f20\u9012\u7ed9\u76f8\u5e94\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c \u5e76\u4e14\u6309\u7167\u8bbe\u5b9a\u5f39\u51faPush\u901a\u77e5\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">&nbsp;<a id=\"ematt:181\" href=\"\/notes\/content\/uploadfile\/201303\/15601362838706.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/15601362838706.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u4ece\u4e0a\u56fe\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">1\u3001\u9996\u5148\u662f\u5e94\u7528\u7a0b\u5e8f\u6ce8\u518c\u6d88\u606f\u63a8\u9001\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">2\u3001 IOS\u8ddfAPNS Server\u8981deviceToken\u3002\u5e94\u7528\u7a0b\u5e8f\u63a5\u53d7deviceToken\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">3\u3001\u5e94\u7528\u7a0b\u5e8f\u5c06deviceToken\u53d1\u9001\u7ed9PUSH\u670d\u52a1\u7aef\u7a0b\u5e8f\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">4\u3001 \u670d\u52a1\u7aef\u7a0b\u5e8f\u5411APNS\u670d\u52a1\u53d1\u9001\u6d88\u606f\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">5\u3001APNS\u670d\u52a1\u5c06\u6d88\u606f\u53d1\u9001\u7ed9iPhone\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u65e0\u8bba\u662fiPhone\u5ba2\u6237\u7aef\u8ddfAPNS,\u8fd8\u662fProvider\u548cAPNS\u90fd\u9700\u8981\u901a\u8fc7\u8bc1\u4e66\u8fdb\u884c\u8fde\u63a5\u7684\u3002\u4e0b\u9762\u6211\u4ecb\u7ecd\u4e00\u4e0b\u51e0\u79cd\u7528\u5230\u7684\u8bc1\u4e66\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u51e0\u79cd\u8bc1\u4e66\uff1a<\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u4e00\u3001*.certSigningRequest\u6587\u4ef6<\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">1\u3001\u751f\u6210Certificate Signing Request (CSR)\uff1a<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:182\" href=\"\/notes\/content\/uploadfile\/201303\/799b1362838706.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/799b1362838706.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">2\u3001\u586b\u5199\u4f60\u7684\u90ae\u7bb1\u548cCommon Name\uff0c\u8fd9\u91cc\u586b\u5199\u4e3aPushChat\u3002\u9009\u62e9\u4fdd\u5b58\u5230\u786c\u76d8\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:183\" href=\"\/notes\/content\/uploadfile\/201303\/d0091362838707.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/d0091362838707.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8fd9\u6837\u5c31\u5728\u672c\u5730\u751f\u6210\u4e86\u4e00\u4e2a<span style=\"padding-bottom:0px;background-color:#ff0000;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">PushChat.certSigningRequest<\/span>\u6587\u4ef6\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u4e8c\u3001\u751f\u6210*.p12\u6587\u4ef6<\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">1\u3001\u5bfc\u51fa\u5bc6\u94a5\uff0c\u5e76\u8f93\u5165\u4f60\u7684\u5bc6\u7801\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:184\" href=\"\/notes\/content\/uploadfile\/201303\/032b1362838707.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/032b1362838707.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8f93\u5165\u4f60\u7684\u5bc6\u7801\uff1a<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:185\" href=\"\/notes\/content\/uploadfile\/201303\/18e21362838708.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/18e21362838708.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8fd9\u6837\u5c31\u751f\u6210\u4e86\u4e00\u4e2a<span style=\"padding-bottom:0px;background-color:#ff0000;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">PushChatKey.p12<\/span>\u6587\u4ef6\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u4e09\u3001\u65b0\u5efa\u4e00\u4e2aApp ID \u548cSSL certificate\u6587\u4ef6<\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">1\u3001\u7528\u4f60\u7684\u4ed8\u8fc7\u8d39\u7684apple\u5e10\u53f7\u767b\u5f55\u5230<a style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#6466b3;text-decoration:underline;padding-top:0px;\" href=\"https:\/\/developer.apple.com\/ios\/manage\/overview\/index.action\">iOS Provisioning Portal<\/a>\u3002\u65b0\u5efa\u4e00\u4e2aApp ID\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">Description:\u4e2d\u8f93\u5165PushChat<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">Bundle Seed ID:\u9ed8\u8ba4\u9009\u62e9Generate New<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">Bundle Identifier\uff1a\u8f93\u5165com.mysoft.PushChat<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u70b9\u51fb\u63d0\u4ea4<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:186\" href=\"\/notes\/content\/uploadfile\/201303\/fe5d1362838709.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/fe5d1362838709.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8fd9\u6837\u5c31\u4f1a\u751f\u6210\u4e0b\u9762\u8fd9\u6761\u8bb0\u5f55\uff1a<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:198\" href=\"\/notes\/content\/uploadfile\/201303\/469f1362838817.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"width:630px;height:53px;\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/469f1362838817.png\" width=\"535\" height=\"53\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u70b9\u51fb\u914d\u7f6e\uff1a<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:187\" href=\"\/notes\/content\/uploadfile\/201303\/8cda1362838710.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/8cda1362838710.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u51fa\u73b0\u4e0b\u9762\u754c\u9762\uff0c\u70b9\u51fb\u7ee7\u7eed\uff1a<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:188\" href=\"\/notes\/content\/uploadfile\/201303\/7afb1362838711.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/7afb1362838711.png\" width=\"559\" height=\"513\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8fd9\u91cc\u6211\u4eec\u9009\u62e9\u524d\u9762\u751f\u6210\u597d\u7684PushChat.certSigningRequest\u6587\u4ef6\uff0c\u70b9\u51fb\u751f\u6210\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:189\" href=\"\/notes\/content\/uploadfile\/201303\/ae561362838712.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/ae561362838712.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u6b63\u5728\u751f\u6210<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:190\" href=\"\/notes\/content\/uploadfile\/201303\/62bf1362838713.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/62bf1362838713.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u751f\u6210\u5b8c\u6bd5\uff0c\u6211\u4eec\u628a\u5b83\u4e0b\u8f7d\u4e0b\u6765\u3002\u547d\u540d\u4e3a<span style=\"padding-bottom:0px;background-color:#ff0000;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">aps_developer_identity.cer<\/span>\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:191\" href=\"\/notes\/content\/uploadfile\/201303\/8df71362838714.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/8df71362838714.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u70b9\u51fb\u5b8c\u6210\uff0c\u4f60\u4f1a\u53d1\u73b0\u72b6\u6001\u53d8\u6210Enabled\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:192\" href=\"\/notes\/content\/uploadfile\/201303\/94141362838715.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/94141362838715.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u5230\u73b0\u5728\u4e3a\u6b62\uff0c\u6211\u4eec\u5df2\u7ecf\u751f\u6210\u4e863\u4e2a\u6587\u4ef6\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">1\u3001PushChat.certSigningRequest<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">2\u3001PushChatKey.p12<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">3\u3001aps_developer_identity.cer<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u73b0\u5728\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684iPhone\u5e94\u7528\u7a0b\u5e8f\u3002<\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">1\u3001\u6253\u5f00Xcode\uff0c\u9009\u62e9\u521b\u5efa\u4e00\u4e2aView-based Application\u3002\u547d\u540d\u5982\u4e0b\u56fe\uff1a<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:193\" href=\"\/notes\/content\/uploadfile\/201303\/7b6f1362838717.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" style=\"width:587px;height:358px;\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/7b6f1362838717.png\" width=\"479\" height=\"333\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">2\u3001\u5728PushChatAppDelegate\u4e2d\u7684didFinishLaunchingWithOptions\u65b9\u6cd5\u4e2d\u52a0\u5165\u4e0b\u9762\u4ee3\u7801\uff1a<\/p>\n<div style=\"border-bottom:#cccccc 1px solid;border-left:#cccccc 1px solid;padding-bottom:5px;overflow-x:auto;overflow-y:auto;background-color:#f5f5f5;margin:0px;padding-left:5px;padding-right:5px;font-family:'Courier New';font-size:13px;word-break:break-all;border-top:#cccccc 1px solid;border-right:#cccccc 1px solid;padding-top:5px;\">\n<pre style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><div style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">-<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> (BOOL)application:(UIApplication <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">*<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)application didFinishLaunchingWithOptions:(NSDictionary <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">*<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)launchOptions\r\n{\r\n    self.window.rootViewController <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">=<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> self.viewController;\r\n    [self.window makeKeyAndVisible];\r\n \r\n    <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\">\/\/<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\"> Let the device know we want to receive push notifications<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\"> <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:\r\n        (UIRemoteNotificationTypeBadge <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">|<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> UIRemoteNotificationTypeSound <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">|<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> UIRemoteNotificationTypeAlert)];\r\n \r\n    <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">return<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> YES;\r\n} <\/span><\/div>\r\n<\/pre>\n<\/div>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u901a\u8fc7registerForRemoteNotificationTypes\u65b9\u6cd5\uff0c\u544a\u8bc9\u5e94\u7528\u7a0b\u5e8f\uff0c\u80fd\u63a5\u53d7push\u6765\u7684\u901a\u77e5\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">3\u3001\u5728xcode\u4e2d\u8fd0\u884c\uff0c\u4f1a\u5f39\u51fa\u4e0b\u9762\u7684\u63d0\u793a\u6846\uff1a<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:194\" href=\"\/notes\/content\/uploadfile\/201303\/db3a1362838717.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/db3a1362838717.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u9009\u62e9OK\u3002\u8868\u793a\u6b64\u5e94\u7528\u7a0b\u5e8f\u5f00\u542f\u6d88\u606f\u901a\u77e5\u670d\u52a1\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u5728 PushChatAppDelegate.m\u4ee3\u7801\u4e2d\u6dfb\u52a0\u4e0b\u9762\u65b9\u6cd5\u83b7\u53d6deviceToken \uff1a<\/p>\n<div style=\"border-bottom:#cccccc 1px solid;border-left:#cccccc 1px solid;padding-bottom:5px;overflow-x:auto;overflow-y:auto;background-color:#f5f5f5;margin:0px;padding-left:5px;padding-right:5px;font-family:'Courier New';font-size:13px;word-break:break-all;border-top:#cccccc 1px solid;border-right:#cccccc 1px solid;padding-top:5px;\">\n<pre style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><div style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">-<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> (<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">void<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)application:(UIApplication<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">*<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">*<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)deviceToken\r\n{\r\n    NSLog(<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">@\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">My token is: %@<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">, deviceToken);\r\n}\r\n <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">-<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> (<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">void<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)application:(UIApplication<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">*<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)application didFailToRegisterForRemoteNotificationsWithError:(NSError<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">*<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)error\r\n{\r\n    NSLog(<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">@\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">Failed to get token, error: %@<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">, error);\r\n} <\/span><\/div>\r\n<\/pre>\n<\/div>\n<p>\u83b7\u53d6\u5230\u7684deviceToken\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7webservice\u670d\u52a1\u63d0\u4ea4\u7ed9.net\u5e94\u7528\u7a0b\u5e8f\uff0c\u8fd9\u91cc\u6211\u7b80\u5355\u5904\u7406\uff0c\u76f4\u63a5\u6253\u5370\u51fa\u6765\uff0c\u62f7\u8d1d\u5230.net\u5e94\u7528\u73af\u5883\u4e2d\u4f7f\u7528\u3002 <\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u53d1\u9001\u901a\u77e5\u7684.net\u5e94\u7528\u7a0b\u5e8f\u51fa\u6765\u9700\u8981\u77e5\u9053deviceToken\u4e4b\u5916\uff0c\u8fd8\u9700\u8981\u4e00\u4e2a\u4e0eAPNS\u8fde\u63a5\u7684\u8bc1\u4e66\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8fd9\u4e2a\u8bc1\u4e66\u53ef\u4ee5\u901a\u8fc7\u6211\u4eec\u524d\u9762\u751f\u6210\u7684\u4e24\u4e2a\u6587\u4ef6\u4e2d\u5f97\u5230\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u4f7f\u7528OpenSSL\u751f\u6210.net\u548cAPNS\u901a\u4fe1\u7684\u8bc1\u4e66\u6587\u4ef6\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">1\u3001\u5c06aps_developer_identity.cer\u8f6c\u6362\u6210 aps_developer_identity.pem\u683c\u5f0f\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">2\u3001\u5c06p12\u683c\u5f0f\u7684\u79c1\u94a5\u8f6c\u6362\u6210pem\uff0c\u9700\u8981\u8bbe\u7f6e4\u6b21\u5bc6\u7801\uff0c\u8fd9\u91cc\u5bc6\u7801\u90fd\u8bbe\u7f6e\u4e3a\uff1aabc123\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">openssl pkcs12 -nocerts -out PushChat_Noenc.pem -in PushChat.p12<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">3\u3001\u7528certificate\u548cthe key \u521b\u5efaPKCS#12\u683c\u5f0f\u7684\u6587\u4ef6\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">openssl pkcs12 -export -in aps_developer_identity.pem -inkey PushChat_Noenc.pem -certfile PushChat.certSigningRequest -name \"aps_developer_identity\" -out aps_developer_identity.p12<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8fd9\u6837\u6211\u4eec\u5c31\u5f97\u5230\u4e86\u5728.net\u5e94\u7528\u7a0b\u5e8f\u4e2d\u4f7f\u7528\u7684\u8bc1\u4e66\u6587\u4ef6\uff1a<span style=\"padding-bottom:0px;background-color:#ff0000;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">aps_developer_identity.p12<\/span>\u3002<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u5728.net\u5e94\u7528\u7a0b\u5e8f\u4e2d\u53d1\u9001\u901a\u77e5\u3002<\/tt><\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u6709\u4e2a\u5f00\u6e90\u7684\u7c7b\u5e93\uff1aapns-sharp\u3002<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u5730\u5740\u662f\uff1a<a style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;color:#6466b3;text-decoration:underline;padding-top:0px;\" href=\"http:\/\/code.google.com\/p\/apns-sharp\/\">http:\/\/code.google.com\/p\/apns-sharp\/<\/a>\u3002<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u6211\u4eec\u4e0b\u8f7d\u6e90\u4ee3\u7801\uff0c\u5bf9\u91cc\u9762\u7684JdSoft.Apple.Apns.Notifications\u505a\u76f8\u5e94\u7684\u8c03\u6574\u5c31\u80fd\u7528\u4e86\u3002<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u6211\u4eec\u6839\u636eDeviceToken\u548cp12File\u5bf9JdSoft.Apple.Apns.Notifications.Test\u4ee3\u7801\u505a\u76f8\u5e94\u7684\u8c03\u6574\uff0c\u5982\u4e0b\u56fe\u3002<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:195\" href=\"\/notes\/content\/uploadfile\/201303\/1e411362838718.png\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/1e411362838718.png\" \/><\/a><\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u8fd9\u6837\u5c31OK\u4e86\u3002<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u6548\u679c\uff1a<\/tt><\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u901a\u77e5\u7684\u4ee3\u7801\uff1a<\/tt><\/p>\n<div style=\"border-bottom:#cccccc 1px solid;border-left:#cccccc 1px solid;padding-bottom:5px;overflow-x:auto;overflow-y:auto;background-color:#f5f5f5;margin:0px;padding-left:5px;padding-right:5px;font-family:'Courier New';font-size:13px;word-break:break-all;border-top:#cccccc 1px solid;border-right:#cccccc 1px solid;padding-top:5px;\">\n<pre style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><div style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">for<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> (<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">int<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> i <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">=<\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800080;padding-top:0px;\">1<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">; i <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">&lt;=<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> count; i<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">++<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">)\r\n            {\r\n                <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\">\/\/<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\">Create a new notification to send<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\"> <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">                Notification alertNotification <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">=<\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">new<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> Notification(testDeviceToken);\r\n                \r\n                alertNotification.Payload.Alert.Body <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">=<\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">string<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">.Format(<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">Testing {0}...<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">, i);\r\n                alertNotification.Payload.Sound <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">=<\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">default<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">;\r\n                alertNotification.Payload.Badge <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">=<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> i;\r\n                                \r\n                <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\">\/\/<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\">Queue the notification to be sent<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\"> <\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">if<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> (service.QueueNotification(alertNotification))\r\n                    Console.WriteLine(<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">Notification Queued!<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">);\r\n                <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">else<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">                     Console.WriteLine(<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">Notification Failed to be Queued!<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">);\r\n\r\n                <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\">\/\/<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\">Sleep in between each message<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#008000;padding-top:0px;\"> <\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#0000ff;padding-top:0px;\">if<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> (i <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">&lt;<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> count)\r\n                {\r\n                    Console.WriteLine(<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">Sleeping <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">+<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\"> sleepBetweenNotifications <\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">+<\/span> <span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\"> milliseconds before next Notification...<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#800000;padding-top:0px;\">\"<\/span><span style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;font-family:'Courier New';color:#000000;padding-top:0px;\">);\r\n                    System.Threading.Thread.Sleep(sleepBetweenNotifications);\r\n                }\r\n            }<\/span><\/div>\r\n<\/pre>\n<\/div>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u7528\u624b\u673a\u62cd\u7684ipad\u4e0a\u9762\u7684\u663e\u793a\uff1a<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><a id=\"ematt:196\" href=\"\/notes\/content\/uploadfile\/201303\/64b81362838718.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/64b81362838718.jpg\" \/><\/a><a id=\"ematt:197\" href=\"\/notes\/content\/uploadfile\/201303\/a2691362838719.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/a2691362838719.jpg\" \/><\/a><\/strong><\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u603b\u7ed3\uff1a<\/strong>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u8be6\u7ec6\u7684\u8bb2\u8ff0\u4e86ios\u6d88\u606f\u63a8\u9001\u673a\u5236\u7684\u5b9e\u73b0\uff0c\u5982\u4f55\u901a\u8fc7.net\u5e94\u7528\u7a0b\u5e8f\u53d1\u9001<\/tt><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u6d88\u606f\u7ed9ios\u5e94\u7528\u7a0b\u5e8f\u3002<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\"><\/tt>&nbsp;<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">\u9644\uff1a<\/tt><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><tt style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">&nbsp;&nbsp; \u6458\u81ea\u7f51\u4e0a\u7684\u4e00\u77ed\u4ee3\u7801\uff1a <span class=\"attachment\"><a href=\"\/notes\/content\/uploadfile\/201303\/6dfe1362840733.zip\" target=\"_blank\">pingguo-C#.zip<\/a><\/span><\/tt><\/p>\n","protected":false},"excerpt":{"rendered":"<p><span style=\"line-height:21px;font-family:verdana,'ms song',Arial,Helvetica,sans-serif;color:#393939;font-size:14px;\">.NET \u5f00\u6e90\u9879\u76ee\uff1a <\/p>\n<div>https:\/\/github.com\/Redth\/APNS-Sharp<\/div>\n<p><\/span> <\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\"><strong style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\">Push\u7684\u539f\u7406\uff1a<\/strong><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">Push \u7684\u5de5\u4f5c\u673a\u5236\u53ef\u4ee5\u7b80\u5355\u7684\u6982\u62ec\u4e3a\u4e0b\u56fe<br style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\" \/><br \/>\n<a id=\"ematt:180\" href=\"\/notes\/content\/uploadfile\/201303\/f3cc1362838705.jpg\" target=\"_blank\"><img decoding=\"async\" border=\"0\" alt=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" src=\"\/notes\/content\/uploadfile\/201303\/f3cc1362838705.jpg\" \/><\/a><\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u56fe\u4e2d\uff0cProvider\u662f\u6307\u67d0\u4e2aiPhone\u8f6f\u4ef6\u7684Push\u670d\u52a1\u5668\uff0c\u8fd9\u7bc7\u6587\u7ae0\u6211\u5c06\u4f7f\u7528.net\u4f5c\u4e3aProvider\u3002 <br style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\" \/><br \/>\nAPNS \u662fApple Push Notification Service\uff08Apple Push\u670d\u52a1\u5668\uff09\u7684\u7f29\u5199\uff0c\u662f\u82f9\u679c\u7684\u670d\u52a1\u5668\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u4e0a\u56fe\u53ef\u4ee5\u5206\u4e3a\u4e09\u4e2a\u9636\u6bb5\u3002<\/p>\n<p style=\"padding-bottom:0px;text-indent:0px;margin:5px auto;padding-left:0px;padding-right:0px;padding-top:0px;\">\u7b2c\u4e00\u9636\u6bb5\uff1a.net\u5e94\u7528\u7a0b\u5e8f\u628a\u8981\u53d1\u9001\u7684\u6d88\u606f\u3001\u76ee\u7684iPhone\u7684\u6807\u8bc6\u6253\u5305\uff0c\u53d1\u7ed9APNS\u3002 <br style=\"padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;padding-top:0px;\" \/><br \/>\n\u7b2c\u4e8c\u9636\u6bb5\uff1aAPNS\u5728\u81ea\u8eab\u7684\u5df2\u6ce8\u518cPush\u670d\u52a1\u7684iPhone\u5217\u8868\u4e2d\uff0c\u67e5\u627e\u6709\u76f8\u5e94\u6807\u8bc6\u7684iPhone\uff0c...<\/p>\n<p> <a href=\"https:\/\/www.xiaobo.li\/notes\/archives\/295\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[283],"tags":[107,109,108],"class_list":["post-295","post","type-post","status-publish","format-standard","hentry","category-technologys","tag-apn","tag-ios","tag-iphone"],"_links":{"self":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/comments?post=295"}],"version-history":[{"count":0,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/295\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/media?parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/categories?post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/tags?post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}