apple push notification service apple与Python结合推送
来源:互联网 发布:linux用户切换命令 编辑:程序博客网 时间:2024/06/13 08:45
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=NSCocoaErrorDomainCode=3000 UserInfo=0x1655c0 "未找到应用程序的“aps-environment”的权利字符串"
解决方法:
1.查看证书是不是有.*
2.看看Push是否被关闭
3.一定要按照先后顺序配置
4.项目的Identify名称一定要和App ID中的对应
- apple push notification service apple与Python结合推送
- apple push notification service apple与Python结合推送
- apple push notification service apple与Python结合推送
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service .
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- IOS 推送服务--Apple Push Notification Service
- Apple Push Notification Service(苹果推送服务)
- iphone 推送服务--Apple Push Notification Service
- iphone 推送服务--Apple Push Notification Service
- Common Lisp函数的基础知识
- 深入浅出REST
- Libyan Military Captures Gadhafi's Fugitive Son
- Android事件处理
- Core Plot SDK的用法
- apple push notification service apple与Python结合推送
- Unity3D 游戏引擎之游戏对象的访问绘制线与绘制面详解(十七)
- 结构体对齐
- 什么是可用性测试? .
- http协议头详解,更新中
- 每年考证时间表
- hdu 5.1.5 code lock
- 有趣的Java - 简单使用enum实现策略模式Strategy
- C++的函数重载