iOS推送大家经常会用到,最近我也用到了,再此记录以下push的整个流程 1.首先打开本地的“钥匙串访问” ==>证书助理==>从证书颁发机构求证书 2.填写证书信息,输入邮件地址,填写常用名称,重要的是选择“存储到本地磁盘” 3.点击继续保存到本地桌面,储存的默认名称为:"CertificateSigningRequest.certSigningRequest" 创建一个App ID 4.打开“http://developer.apple.com/devcenter/ios/index.action” 5.选择“App IDs” ==>New App ID 6.输入identify,如果证书已经存在绑定你的证书编号,不存在生成一个新的,输入你的应用程序唯一标识ID(如epub360.com.ArtsCool2)然后提交保存 7.App ID创建成功 创建证书 8.点击上图中的Configure后 9.选中“ Enable for Apple Push Notification service”,点击Configure。现在会看到苹果推送通知服务的SSL证书助理 10.点击Choose File选择上面第3步生成的“"CertificateSigningRequest.certSigningRequest"文件 11.你的SSL证书将生成 12.点击"download",下载完成后双击此文件 创建证书 13.返回iPhone Development Program Portal,点击New Profile, 填写配置文件名称,App ID选中刚刚创建的ArtsCool2,选中所有的设备,点击提交 14.点击下载这个证书,这个证书默认名称为“XXX.mobileprovision” 配置一个设备 15.连接你的设备,开启Xcode ==>Winow==>Organizer,把“XXX.mobileprovision”拖入设备中 创建一个你的应用 16.创建一个你的应用程序,如ArtsCool2,把aps_developer_identity.cer加入你的工程 17.修改Targets 18.选择证书 19.在ArtsCool2AppDelegate.m文件中加入如下代码: @implementation ArtsCool2AppDelegate @synthesize window; @synthesize viewController; - (void)applicationDidFinishLaunching:(UIApplication *)application { [window addSubview:viewController.view]; [window makeKeyAndVisible]; NSLog(@"Registering for push notifications..."); [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; application.applicationIconBadgeNumber = 0; //程序开启,设置UIRemoteNotificationTypeBadge标识为0 } - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken]; NSLog(str); } - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { NSString *str = [NSString stringWithFormat: @"Error: %@", err]; NSLog(str); } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { for (id key in userInfo) { NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]); } } - (void)dealloc { [viewController release]; [window release]; [super dealloc]; } @end 20.运行程序,你会看到 21.退出你的程序你将看到 创建推送通知的服务器 服务器发送通知需要:deviceToken和APNS连接的证书。 - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken]; NSLog(str); } 在ArtsCool2AppDelegate已经获取了deviceToken,我们通过NSURLRequest方式回传给服务器。 APNS连接的证书生成 21.打开“钥匙访问串”,导出我们刚刚加入的证书,命名为:cert.p12 22.选中钥匙图标导出命名为:key.p12 23.使用OpenSSL生成Pyton和APNS通信的证书文件 openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12 openssl pkcs12 -nocerts -out key.pem -in key.p12 如果你想刪除 passphase在key.pem私鑰,這樣做 openssl rsa -in key.pem -out key.unencrypted.pem 24.然后把证书和密钥结合起来 cat cert.pem key.unencrypted.pem > ck.pem 26.以下是Python主要代码 python代码中引用了开源库APNSWrapper http://code.google.com/p/apns-python-wrapper/downloads/list deviceToken = 'Qun\xaa\xd4R\x11zu\x07\x04\x9dG\xe6\x96j&\x95Y\x9d\x91~\xcc`z\n\x88O\xc0\x9c\xf6\xca' # create wrapper wrapper = APNSNotificationWrapper('ck.pem', True) # create message message = APNSNotification() message.token(deviceToken) message.badge(5) # add message to tuple and send it to APNS server wrapper.append(message) wrapper.notify() 如果以上没有配置成功,错误信息如: Error: Error Domain=NSCocoaErrorDomain Code=3000 UserInfo=0x1655c0 "未找到应用程序的“aps-environment”的权利字符串" 解决方法: 1.查看证书是不是有.* 2.看看Push是否被关闭 3.一定要按照先后顺序配置 4.项目的Identify名称一定要和App ID中的对应 |
apple push notification service apple与Python结合推送
最新推荐文章于 2024-11-05 17:41:23 发布