如何使用NSStream和APN证书发送推送通知

时间:2014-07-31 15:27:43

标签: ios macos apple-push-notifications nsstream

我知道有一些工具可用于发送使用php或C ++或其他方式实现的推送通知。我正在尝试使用NSStream开发自己的。我试过以下代码。

    CFReadStreamRef readStream;
    CFWriteStreamRef writeStream;
    CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)[website host], 80, &readStream, &writeStream);

    NSInputStream *inputStream = (__bridge_transfer NSInputStream *)readStream;
    NSOutputStream *outputStream = (__bridge_transfer NSOutputStream *)writeStream;
    [inputStream setDelegate:self];
    [outputStream setDelegate:self];
    [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [inputStream open];
    [outputStream open];

委托方法:

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
NSLog(@"stream:handleEvent: is invoked...");

switch(eventCode) {
    case NSStreamEventOpenCompleted:
        // it is getting here
        break;
    case NSStreamEventHasSpaceAvailable:
    {
        if (stream == oStream) {
            NSString * str = [NSString stringWithFormat:
                @"{"aps":{"alert":"Hello from APN server.","badge":"1"}}"];

            // how do i add device token

            const uint8_t * payload =
                (const uint8_t *)[str UTF8String];
            [oStream write:payload maxLength:strlen(payload)];
            [oStream close];
        }
        break;
    }
}

}

现在的问题是:

  1. 如何使用推送证书打开流
  2. 如何使用设备令牌生成有效内容

0 个答案:

没有答案