Как использовать образец PushMeBaby для отправки Apple Push-уведомлений? - PullRequest
4 голосов
/ 01 февраля 2010

Я пытаюсь использовать пример приложения APN Server PushMeBaby для отправки push-уведомлений на мое устройство. У меня есть приложение для распространения adhoc. Для своего идентификатора приложения я создал оба сертификата ssl для разработки и производства. Кажется, что он не отправляет push-уведомления из приложения PushMeBaby, я уже установил Push 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.

Ответы [ 4 ]

10 голосов
/ 28 апреля 2011

ОК - понял это.

Маркер устройства, который я передавал (который я получил от UrbanAirship), не имел пробелов. Я использовал токен устройства из консоли из приложения для iPhone в этом замечательном уроке (http://mobiforge.com/developing/story/programming-apple-push-notification-services), в котором есть пробелы между каждыми 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 голосов
/ 30 апреля 2014

Просто добавьте это перед

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

А теперь вам поддерживается формат "spaceless".

0 голосов
/ 13 июня 2013

да для Push me baby токен устройства должен быть

45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763

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

если вы включите <>, он входит в бесконечный цикл в NSScanner

Хотя официально токен устройства должен содержать <> и пробелы, которые вы получите, когда регистрируетесь если вы используете его в других приложениях, таких как APN TESTER на MAC APP STORE

<45f62964 06523099 b66017f7 0eb3ea7d 14140c11 af6f14a0 c24145d1 90005763>
0 голосов
/ 01 июня 2012

Просто подумал, что я добавлю сюда свои два цента, так как это меня тоже достало. Если вы поняли, что в токене устройства должны быть пробелы, то, чтобы эта проблема никогда больше не возникала, замените этот раздел кода:

    // 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;
    }
...