在SAE使用Apple Push Notification Service服务

作者:暗夜星辰 发布于:2013-3-4 22:10 Monday 分类:IOS学习笔记

1,在iOS开发者中心: iOS Provisioning Portal 创建一个AppID,如图:

点击查看原图

点击查看原图

2,生成iOS Push Service证书,如图:

点击查看原图

点击查看原图

点击查看原图

按照上述提示操作:

点击查看原图

点击查看原图

点击查看原图

点击查看原图


回到网站,


点击查看原图

点击查看原图

选择刚才生成的文件,并上传:

点击查看原图





点击查看原图

点击“Download”下载iOS Push Service证书文件


点击查看原图

3,导入证书文件到keychain双击即可


点击查看原图

4,生成ck.pem

导出cert.p12
点击查看原图

点击查看原图

导出key.p12:


点击查看原图

点击查看原图

得到这样两个文件:


点击查看原图

接下来打开终端:

输入命令:

openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12

 

点击查看原图

然后输入命令:


openssl pkcs12 -nocerts -out key.pem -in key.p12


点击查看原图

最后合并成一个ck.pem文件:

输入命令:

cat cert.pem key.pem > ck.pem


点击查看原图

得到一个ck.pem文件:


点击查看原图

5, 生成并安装Profile文件:


点击查看原图

点击查看原图

点击查看原图

6, 上传ck.pemSAE 如图


点击查看原图

点击查看原图

7, 客户端程序:

设置profile:


点击查看原图

info.plist中设置Bundle identifier


点击查看原图

将app注册notification里面, 并从APNS上获取测试机的deviceToken, 代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   ......
  //注册到消息中心:
 [[UIApplication sharedApplication]
 registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert |
 UIRemoteNotificationTypeNewsstandContentAvailability)];
 return YES;
}
#pragma mark -
#pragma mark APNS


- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
 //获得 device token
 NSLog(@"deviceToken: %@", deviceToken);
 //获得唯一标示
NSLog(@"uniqueIdentifier: %@", [[UIDevice currentDevice] uniqueIdentifier]);
}


- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
 NSLog(@"Error in registration. Error: %@", error);
}




- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
 if ([[userInfo objectForKey:@"aps"] objectForKey:@"alert"] != nil) {
 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"通知"
 message:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]
 delegate:self
 cancelButtonTitle:@"确定"
 otherButtonTitles:nil];
 [alert show];
 [alert release];
 }
}

 

8, 服务器端程序:



<?php

include_once("saeapns.class.php");

//许可证id
$cert_id = 1;

//设备令牌
$device_token = "xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx";
$message = "测试消息 from SAE: " . date('Y-m-d H:i:s');

//消息体,格式详见iOS官方文档
$body = array(
'aps' => array('alert' => $message , 'badge' => 1, 'sound' => 'in.caf')
);

$apns = new SaeAPNS();
$result = $apns->push($cert_id , $body , $device_token);
if ($result != false) {

echo '发送成功';
} else {
echo '发送失败';
var_dump($apns->errno(), $apns->errmsg());
}
?>

 

 

9, 手机收到通知效果:

点击查看原图


标签: IOS apns push 推送 sae

发表评论:

©2012-2014 woodbunny.com 木头♥兔子的小屋 sitemap