iPhone消息推送机制实现与探讨1

   
   
   
   
-  ( 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);
}

  

  获取到的deviceToken,我们可以通过webservice服务提交给.net应用程序,这里我简单处理,直接打印出来,拷贝到.net应用环境中使用。

    发送通知的.net应用程序出来需要知道deviceToken之外,还需要一个与APNS连接的证书。

    这个证书可以通过我们前面生成的两个文件中得到。

使用OpenSSL

1、将aps_developer_identity.cer转换成 aps_developer_identity.pem格式。

openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM

2、将p12格式的私钥转换成pem,需要设置4次密码,密码都设置为:abc123。

openssl pkcs12 -nocerts -out PushChat_Noenc.pem -in PushChat.p12

3、用certificate和the key 创建PKCS#12格式的文件。

openssl pkcs12 -export -in aps_developer_identity.pem -inkey PushChat_Noenc.pem -certfile PushChat.certSigningRequest -name "aps_developer_identity" -out aps_developer_identity.p12

这样我们就得到了在.net应用程序中使用的证书文件:aps_developer_identity.p12

在.net应用程序中发送通知。

有个开源的类库:apns-sharp。

地址是:http://code.google.com/p/apns-sharp/

我们下载源代码,对里面的JdSoft.Apple.Apns.Notifications做相应的调整就能用了。

我们根据DeviceToken和p12File对JdSoft.Apple.Apns.Notifications.Test做相应的调整,如下图。

iPhone消息推送机制实现与探讨1_第1张图片

这样就OK了。

效果:

通知的代码:

   
   
   
   
for  ( int  i  =   1 ; i  <=  count; i ++ )
{
// Create a new notification to send
Notification alertNotification  =   new  Notification(testDeviceToken);

alertNotification.Payload.Alert.Body 
=   string .Format( " Testing {0}... " , i);
alertNotification.Payload.Sound 
=   " default " ;
alertNotification.Payload.Badge 
=  i;
   
   
   
   
// Queue the notification to be sent
if  (service.QueueNotification(alertNotification))
Console.WriteLine(
" Notification Queued! " );
else

 Console.WriteLine("Notification Failed to be Queued!");


//Sleep in between each message
if (i < count)
{
Console.WriteLine("Sleeping " + sleepBetweenNotifications + " milliseconds before next Notification...");
System.Threading.Thread.Sleep(sleepBetweenNotifications);
}
}
用手机拍的ipad上面的显示:

iPhone消息推送机制实现与探讨1_第2张图片

 

总结:这篇文章主要是详细的讲述了ios消息推送机制的实现,如何通过.net应用程序发送消息给ios应用程序。

 



你可能感兴趣的:(iPhone消息推送机制实现与探讨1)