<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Notes of a Developer &#187; Push</title>
	<atom:link href="http://www.developers-life.com/tag/push/feed" rel="self" type="application/rss+xml" />
	<link>http://www.developers-life.com</link>
	<description>Develop on Objective-C, UIKit, C, OpenGL for  iPhone, iPad, Mac OS X</description>
	<lastBuildDate>Fri, 03 Feb 2012 11:49:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Apple Push Notification (Generate APNS SSL Certificate)</title>
		<link>http://www.developers-life.com/apple-push-notification.html</link>
		<comments>http://www.developers-life.com/apple-push-notification.html#comments</comments>
		<pubDate>Sun, 11 Oct 2009 19:50:19 +0000</pubDate>
		<dc:creator>Vladimir Boychentsov</dc:creator>
				<category><![CDATA[others]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[Push]]></category>

		<guid isPermaLink="false">http://www.developers-life.com/?p=565</guid>
		<description><![CDATA[Generate APNS SSL Certificate To get started with APNS we need to generate an certificate unique to each applications which will support APNS. We need to log into our iPhone developer portal with “Team Agent” access. Only users with “Team Agent” access can do the below mentioned process. The iPhone developer portal with “Team Agent [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Generate APNS SSL Certificate</strong></p>
<p>To get started with APNS we need to generate an certificate unique to each applications which will support APNS. We need to log into our iPhone developer portal with “Team Agent” access.  Only users with “Team Agent” access can do the below mentioned process. The iPhone developer portal with “Team Agent ” has a detailed steps to generate an APNS certificate. You should be able to see the screen shown below in the portal to start creating your APNS certificate. Follow the steps mentioned below:-</p>
<p>Fig 1: APNS Development Certificate<br />
(1) You need to create an App ID without .* in the iPhone developer Portal. An App ID without .* means its unique and works only for a single application</p>
<p>(2) Generate a certificate signing request from your Mac’s keychain (You should be an Team Agent to have access to the wizard shown in Figure 1) as shown in figure 2 and save to disk</p>
<p>(3) Upload the CertificateSigningRequest.certSigningRequest to the Program Portal</p>
<p>(4) Wait for the generation of cert (about 1 min). Download the certificate (aps_developer_identity.cer) from the Program Portal</p>
<p>(5) Keep (or rename them if you want) these 2 files (steps 2 and 4) in a safe place. You might need the CertificateSigningRequest.certSigningRequest file to request a production cert in the future or renew it again.</p>
<p>(6) Suppose you have imported the aps_developer_identity.cer to the keychain. Then you have to export these new cert and the private key of this cert (not the public key) and saved as .p12 files.</p>
<p>(7) Then you use these commands to generate the cert and key in Mac’s Terminal for PEM format (Privacy Enhanced Mail Security Certificate)</p>
<p><span style="color: #800000;">openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12<br />
openssl pkcs12 -nocerts -out key.pem -in key.p12</span></p>
<p>(8) The cert.pem and key.pem files will be used by your own program communicating with APNS.</p>
<p>(9) If you want to remove the passphase of private key in key.pem, do this</p>
<p><span style="color: #800000;">openssl rsa -in key.pem -out key.unencrypted.pem</span></p>
<p>Then combine the certificate and key</p>
<p><span style="color: #800000;">cat cert.pem key.unencrypted.pem &gt; ck.pem</span></p>
<p>But please set the file permission of this unencrypted key by using chmod 400 and is only readable by root in a sever configuration.</p>
<p>(10) The testing APNS is at ssl://gateway.sandbox.push.apple.com:2195<br />
<span id="more-565"></span></p>
<p>Fig 2: Request Certificate From Keychain Access<br />
(11) For the source codes to push payload message to the APNS, you can find them in the Developer Forum. This is the one that I used, for php. Run this (after obtaining the device token from the testing device and with iPhone Client program setup)<br />
php -f apns.php &#8220;My Message&#8221; 2</p>
<p>or if you put this php script and the ck.pem in a local web server, you can use this to test</p>
<p>http://127.0.0.1/apns/apns.php?message=Hello%20from%20macoscoders&#038;badge=2&#038;sound=received5.caf</p>
<p>apns.php</p>
<div class="codecolorer-container php geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #000088;">$deviceToken</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'02da851dXXXXXXXXb4f2b5bfXXXXXXXXce198270XXXXXXXX0d3dac72bc87cd60'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// masked for security reason</span><br />
<span style="color: #666666; font-style: italic;">// Passphrase for the private key (ck.pem file)</span><br />
<span style="color: #666666; font-style: italic;">// $pass = '';</span><br />
<span style="color: #666666; font-style: italic;">// Get the parameters from http get or from command line</span><br />
<span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'message'</span><span style="color: #009900;">&#93;</span> or <span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> or <span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> ‘Message received from javacom’<span style="color: #339933;">;</span><br />
<span style="color: #000088;">$badge</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'badge'</span><span style="color: #009900;">&#93;</span> or <span style="color: #000088;">$badge</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$sound</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'sound'</span><span style="color: #009900;">&#93;</span> or <span style="color: #000088;">$sound</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// Construct the notification payload</span><br />
<span style="color: #000088;">$body</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$body</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'aps'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>’alert’ <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$message</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$badge</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #000088;">$body</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'aps'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'badge'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$badge</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$sound</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #000088;">$body</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'aps'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'sound'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$sound</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* End of Configurable Items */</span><br />
<span style="color: #000088;">$ctx</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/stream_context_create"><span style="color: #990000;">stream_context_create</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/stream_context_set_option"><span style="color: #990000;">stream_context_set_option</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ctx</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ssl'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'local_cert'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ck.pem'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// assume the private key passphase was removed.</span><br />
<span style="color: #666666; font-style: italic;">// stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);</span><br />
<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/stream_socket_client"><span style="color: #990000;">stream_socket_client</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ssl://gateway.sandbox.push.apple.com:2195'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$err</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errstr</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">60</span><span style="color: #339933;">,</span> STREAM_CLIENT_CONNECT<span style="color: #339933;">,</span> <span style="color: #000088;">$ctx</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Failed to connect <span style="color: #006699; font-weight: bold;">$err</span> <span style="color: #006699; font-weight: bold;">$errstrn</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Connection OKn&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000088;">$payload</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/json_encode"><span style="color: #990000;">json_encode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$msg</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/pack"><span style="color: #990000;">pack</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">32</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/pack"><span style="color: #990000;">pack</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'H*'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/str_replace"><span style="color: #990000;">str_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$deviceToken</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/pack"><span style="color: #990000;">pack</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">,</span><a href="http://www.php.net/strlen"><span style="color: #990000;">strlen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$payload</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$payload</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;sending message :&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$payload</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fclose"><span style="color: #990000;">fclose</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>(12) For iPhone Client Program, you need to edit the bundle identifier to the App ID that you created and imported the new provisioning profile for that APP ID to the XCode and iPhone. Then implement the following methods in AppDelegate to Build &#038; Go</p>
<p>AppDelegate.m</p>
<div class="codecolorer-container objc geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:810px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>applicationDidFinishLaunching<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIApplication <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>application <span style="color: #002200;">&#123;</span><br />
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Registering Remote Notications&quot;</span><span style="color: #002200;">&#41;</span>;<br />
<span style="color: #11740a; font-style: italic;">// For beta 2</span><br />
<span style="color: #11740a; font-style: italic;">// [[UIApplication sharedApplication] registerForRemoteNotifications];</span><br />
<span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIApplication sharedApplication<span style="color: #002200;">&#93;</span> registerForRemoteNotificationTypes<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>; <span style="color: #11740a; font-style: italic;">// For beta 3</span><br />
<span style="color: #11740a; font-style: italic;">// other codes here</span><br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>application<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIApplication <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>application didFinishLaunchingWithOptions<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/"><span style="color: #400080;">NSDictionary</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>launchOptions <span style="color: #002200;">&#123;</span><br />
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;%@&quot;</span>,<span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>launchOptions objectForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;UIApplicationLaunchOptionsRemoteNotificationKey&quot;</span><span style="color: #002200;">&#93;</span> objectForKey<span style="color: #002200;">:</span>@”aps”<span style="color: #002200;">&#93;</span> objectForKey<span style="color: #002200;">:</span>@”alert”<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;<br />
<span style="color: #a61390;">return</span> <span style="color: #a61390;">YES</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>application<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIApplication <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>application didRegisterForRemoteNotificationsWithDeviceToken<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/"><span style="color: #400080;">NSData</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>deviceToken <span style="color: #002200;">&#123;</span><br />
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;deviceToken: %@&quot;</span>, deviceToken<span style="color: #002200;">&#41;</span>;<br />
<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>application<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIApplication <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>application didFailToRegisterForRemoteNotificationsWithError<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSError_Class/"><span style="color: #400080;">NSError</span></a> <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>error <span style="color: #002200;">&#123;</span><br />
NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Error in registration. Error: %@&quot;</span>, error<span style="color: #002200;">&#41;</span>;<br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p><strong>Additional tips</strong></p>
<p>- The feedback service is currently unavailable.<br />
- Send your messages to gateway.sandbox.push.apple.com:2195 during the beta period.<br />
- Devices must be set up as new iPhones in iTunes in order to generate device tokens. Restoring from backup is not currently supported.<br />
-Make sure the audio file received5.caf is included in your application resource.</p>
<p><strong>Registering an App ID for Apple Push Notification service</strong></p>
<p>1. In the App ID section of the Program Portal, locate the App ID you wish to use with the Apple Push Notification service. Only App IDs with a specific bundle ID can be used with the APNs. You cannot use a “wild-card” application ID. You must see “Available” under the Apple Push Notification service column to register this App ID and configure a certificate for this App ID.</p>
<p>2. Click the ‘Configure’ link next to your desired App ID.</p>
<p>3. In the Configure App ID page, check the Enable Push Notification Services box and click the Configure button. Clicking this button launches the APNs Assistant, which guides you through the next series of steps that create your App ID specific Client SSL certificate.</p>
<p>4. Download the Client SSL certificate file to your download location. Navigate to that location and double-click the certificate file (which has an extension of cer) to install it in your keychain.</p>
<p>5. When you are finished, click Done in the APNS Assistant.</p>
<p>6. Double-clicking the file launches Keychain Access. Make sure you install the certificate in your login keychain on the computer you are using for provider development. The APNs SSL certificate should be installed on your notification server.</p>
<p>7. When you finish these steps you are returned to the Configure App ID page of the iPhone Dev Center portal. The certificate should be badged with a green circle and the label “Enabled”.</p>
<p>8. To complete the APNs set-up process, you will need to create a new provisioning profile containing your APNs-enabled App ID.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.developers-life.com/apple-push-notification.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

