我正在尝试使用PushMeBaby示例APN Server应用程序向我的设备发送推送通知。我有adhoc发行申请。对于我的应用程序ID,我已经为开发和生产创建了两个ssl证书。它似乎没有从PushMeBaby应用程序发送推送通知,我已经将安装的推送SSL证书安装到工具链..但它似乎仍然没有工作..
2010-02-01 07:20:49.578 PushMeBaby[7193:a0f] MakeServerConnection(): 0
2010-02-01 07:20:49.613 PushMeBaby[7193:a0f] SSLNewContext(): 0
2010-02-01 07:20:49.614 PushMeBaby[7193:a0f] SSLSetIOFuncs(): 0
2010-02-01 07:20:49.614 PushMeBaby[7193:a0f] SSLSetConnection(): 0
2010-02-01 07:20:49.615 PushMeBaby[7193:a0f] SSLSetPeerDomainName(): 0
2010-02-01 07:20:49.631 PushMeBaby[7193:a0f] SecKeychainOpen(): 0
2010-02-01 07:20:49.648 PushMeBaby[7193:a0f] SecCertificateCreateFromData(): 0
2010-02-01 07:20:49.655 PushMeBaby[7193:a0f] SecIdentityCreateWithCertificate(): 0
2010-02-01 07:20:49.656 PushMeBaby[7193:a0f] SSLSetCertificate(): 0
2010-02-01 07:20:52.353 PushMeBaby[7193:a0f] SSLHandshake(): 0
2010-02-01 07:20:57.954 PushMeBaby[7193:a0f] SSLWrite(): 0 144
以上是PusheBaby xcode应用程序的日志。
答案 0 :(得分:10)
好的 - 想出来了。
我传入的设备令牌(我从UrbanAirship获得)没有空格。我根据这个伟大的教程(http://mobiforge.com/developing/story/programming-apple-push-notification-services)从iPhone应用程序的控制台中使用了设备令牌,该字符串中每8个字符之间有空格。这就行了。
设备令牌应如下所示 - 38c866dd bb323b39 ffa73487 5e157ee5 a85e0b7c e90d56e9 fe145bcc 6c2c594b
稍后 - 当您从PushMeBaby查看NSLog时 - 您会看到SSLWrite调用中的“已处理”计数增加1(我的计数从104增加到105) 例如2011-04-28 11:21:41.543 PushMeBaby [49218:903] SSLWrite():0 105
希望这可以帮助那些像我一样挣扎好几天的人...
答案 1 :(得分:0)
以为我会在这里加上我的两分钱,因为这也让我受益匪浅。如果你意识到设备令牌应该有空格,那么再也不要有这个问题替换这部分代码:
// Validate input.
if(self.deviceToken == nil || self.payload == nil) {
return;
}
用这个:
// Validate input.
if(self.deviceToken == nil || self.payload == nil) {
return;
}
else if(![self.deviceToken rangeOfString:@" "].length)
{
//put in spaces in device token
NSMutableString* tempString = [NSMutableString stringWithString:self.deviceToken];
int offset = 0;
for(int i = 0; i < tempString.length; i++)
{
if(i%8 == 0 && i != 0 && i+offset < tempString.length-1)
{
//NSLog(@"i = %d + offset[%d] = %d", i, offset, i+offset);
[tempString insertString:@" " atIndex:i+offset];
offset++;
}
}
NSLog(@" device token string after adding spaces = '%@'", tempString);
self.deviceToken = tempString;
}
答案 2 :(得分:0)
是的,对于Push me baby,设备令牌应该是
45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763
not
<45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763>
or
45f6296406523099b66017f70eb3ea7d14140c11af6f14a0c24145d190005f9c
如果您包含&lt;&gt;它进入NSScanner的无限循环
虽然官方设备令牌应该包括&lt;&gt;和您在RegisterDevice时得到的空间 如果您在其他应用程序中使用它,例如MAC APP STORE上的APN TESTER
<45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763>
答案 3 :(得分:0)
只需在
之前添加// Convert string into device token data.
到-(IBAction)push:(id)sender;
中的ApplicationDelegate.h
。
if (![self.deviceToken rangeOfString:@" "].length) {
NSMutableString *string = [self.deviceToken mutableCopy];
for (int i = 8; i < string.length; i+=8) {
[string insertString:@" " atIndex:i];
}
self.deviceToken = string;
}
现在你支持无空间&#34;格式。