2010-02-01 115 views
4

我正在嘗試使用PushMeBaby示例APN服務器應用程序向我的設備發送推送通知。我有adhoc分發應用程序。對於我的應用程序ID,我創建了兩個用於開發和生產的ssl證書。這似乎是不PushMeBaby應用程序發送推送通知,我已經alread安裝推SSL證書的工具鏈..它仍然似乎不工作..如何使用PushMeBaby示例發送Apple推送通知?

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

需要更多信息來幫助您,例如您的應用程序中的相關代碼等。 – 2010-02-01 04:49:18

+0

如果您解決了上述問題,請發帖回答。面對同樣的問題。 – Mahesh 2011-01-12 07:49:14

回答

10

好的 - 想通了。

我傳入的設備令牌(我從UrbanAirship獲得)沒有空格。我通過這個很棒的教程(http://mobiforge.com/developing/story/programming-apple-push-notification-services)從iPhone應用程序的控制檯中使用了設備令牌,該字符串中每8個字符之間都有空格。那就是訣竅。

設備令牌應該是這樣的 - 38c866dd bb323b39 ffa73487 5e157ee5 a85e0b7c e90d56e9 fe145bcc 6c2c594b

後 - 當你在看的NSLog從PushMeBaby - 你會看到「加工」的SSLWrite呼叫數增加1 (我從104到105) 例如2011-04-28 11:21:41.543 PushMeBaby [49218:903] SSLWrite():0 105

希望這有助於別人誰掙扎像我好幾天了...

+0

**感謝您的答覆隊友。**我終於在服務器端切換到一些java選擇。這可能會幫助其他人。 – 2011-04-29 04:07:21

+0

使用[this](https:// github。com/jlott1/PushMeBaby-OneMoreTime)而不是'Pushmebaby',它不需要手動添加空間。 – Gon 2014-07-16 09:02:31

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; 
    } 
0

是爲推我的寶寶的設備令牌應該

45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763 

not 
<45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763> 
or 
45f6296406523099b66017f70eb3ea7d14140c11af6f14a0c24145d190005f9c 

如果包括<>它進入一個無限循環在NSScanner

雖然正式所述設備標識應包括<>和空格作爲那如果你在其他應用程序如Mac App Store的APN計

<45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763> 
0

前只需添加此使用它,你會得到什麼,當你RegisterDevice
// Convert string into device token data. 

to -(IBAction)push:(id)sender; in 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; 
} 

而現在它支持「無空間」格式。