apple推送功能环境配置

apple推送功能环境配置

环境配置需要用到:

(1)mac电脑的 Keychain Access程序 (在Applications/Utilities下 )。中文环境名为 钥匙串访问 (在/应用程序/实用工具/钥匙串访问)

(2)apple网站 https://developer.apple.com/devcenter/ios/index.action  (99美金用户登录)

在读本篇文章之前,建议先阅读文章《iphone开发--真机测试 》!

具体配置步骤如下:

1. 生成证书签名请求( Certificate Signing Request, CSR

打开   Keychain Access程序。

输入邮件地址、常用名称;在“请求是”中选择“存储到磁盘”,点按钮[继续]。


选择证书存储的目录,设置存储文件名,这里我命名为  push2013.certSigningRequest ,然后点按钮[存储]。


点按钮[完成]。

2. 导出证书签名请求CSR的私钥。



 这里文件命名为 push2013.p12



 在密码和验证框中输入密码。


3. 创建APP ID

打开网站  https://developer.apple.com/devcenter/ios/index.action  并登录进入 iOS Provisioning Portal;

点右上角的按钮:



输入  Description 和 Bundle Identifier信息,注意:Bundle Identifier名称是你以后在XCode开发中的Bundle Identifier。因此,最好能根据项目名来设置。设置后,点右下角按钮   。

 找到,上面刚创建的名为push2013的应用,然后点链接“Configure”。



 在“Enable for Apple Push Notification service ”前面的方框内打勾,然后点行“Development Push SSL Certificate ”对应的按钮[Configure]。

如果是发布产品,则必须选择下面的【Producy Push SSL certificate】的Configure]按钮!



选择上面生成的CSR证书文件 :  push2013.certSigningRequest






点击图中的按钮   ,将推送的 SSL证书下载到本地,该证书文件名设置为 aps_development.cer 

然后点图中的按钮[Done]。


可以看到状态变为 了,然后点右下角的按钮[Done]。

  4.创建开发配置属性参数(Development Provisioning Profiles


进入菜单 [Provisioning ],然后点击右上角的按钮 


输入参数“Profile Name”(可以是任意名称),选中你的“Certificates”、选择上面创建的APP Id,选中你的“Devices”。

备注:如果没有配置“Certificates”和“Devices”,那么请先参考文章 

iphone开发--真机测试

 进行配置吧!

在参数确定后,点击右下角的按钮 

可以看到如下界面:



 前面创建的push2013_profile的status为“Pending”,然后刷新当前页面,直到出现下面的界面。



push2013_profile的status变为“Active”,就可以点击旁边的按钮[ ]。

下载到本地,文件名为 push2013_profile.mobileprovision 。

把你要用来测试的真机(ipad或iphone)接上你的MAC电脑。

然后双击文件push2013_profile.mobileprovision 运行,会自动打开XCODE的Organizer,并在你的真机中加入该文件。


5.在xcode中创建推送测试程序。


 

注意:图中方框内的“Bundle Identifier”必须和前面创建 APP ID中的“Bundle Identifier”相同。

项目创建后,修改 “AppDelegate.m ”的方法[didFinishLaunchingWithOptions]代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    // Let the device know we want to receive push notifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
    
    return YES;
}
 

另外新增2个方法:

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    NSLog(@"My token is: %@", deviceToken);
}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
    NSLog(@"Failed to get token, error: %@", error);
}
 

在运行前,请选择真机运行,而且真机必须是联网的,否则看不到推送效果!!

选择真机运行,如下图:



 

如果看不到真机,那么请先参考文章 

iphone开发--真机测试

 进行配置吧!

真机运行后,可以看到真机上有推送确认框。如下图:


点击按钮[好]。

另外在xcode的控制台看到输出信息,如下图:

会看到一个64个字符的号码,这个号码就是你的真机的推送ID,如果你要给这个真机发通知,则必须记下这个64位的号码。

这里,请记下你测试真机的推送ID。

6.创建推送通知发送服务程序,用来给真机发推送通知信息。

6.1 制作推送程序必须的证书。

通过上面的一系列操作,我们已经得到了3个主要的证书相关的文件。

为方便操作,请将这3个文件放在同一个目录下。

打开1个MAC终端(终端程序 位置如下图)

  

在终端上,进入到3个证书文件所在的目录。

执行命令:

openssl x509 -in aps_development.cer -inform der -out push2013cert.pem

  执行后,得到证书文件 push2013cert.pem

执行命令:

openssl pkcs12 -nocerts -out push2013key.pem -in push2013.p12

 执行后,输入密码(3次),然后会得到证书文件  push2013key.pem

执行命令:

cat push2013cert.pem push2013key.pem > push2013.pem

 这里得到的证书文件 push2013.pem ,就是推送程序需要的证书(php可以使用pem格式证书)。

如果是java或者.net开发的话,必须使用.p12格式的证书。

执行下面命令来制作p12证书:

openssl pkcs12 -export -inkey push2013key.pem -in push2013cert.pem -out push2013java.p12

得到的证书文件 push2013java.p12 就可以用用于java或.net开发。

6.2 创建一个简单的推送程序。

到了这里,我们已经准备了1个证书文件,1个测试真机的推送ID(就是上面所说的64位号码,注意空格符号要去掉)。

下面只需要1个程序就可以发推送通知了。

这里有1个现成的发送程序(php语言的),参见附件中的 simplepush.php.zip ,下载后解压得到文件 simplepush.php,将其放到与证书 push2013.pem相同目录下。

修改 simplepush.php 内容:


按照图中的提示信息,填写上对应的信息。注意:真机推送ID不要有空格。

文件中的 gateway.sandbox.push.apple.com:2195 是沙箱测试地址。2195是端口号。

文件修改好后,请先将真机运行程序退出(程序运行中看不到推送通知),然后在终端执行命令:

php simplepush.php

执行成功后,将显示:

Connected to APNS

Message successfully delivered

表示推送通知发送成功了!!!!

在测试真机上可以看到:


如果你看到的不一样,可能是真机上对于通知的配置不一样导致。


 

猜你喜欢

转载自stephen830.iteye.com/blog/1701086
今日推荐