我知道有一些工具可用于发送使用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;
}
}
}
现在的问题是: