2014-04-28 86 views
0

在我的應用程序中,我想發送「預定」推送通知。我正在使用quickblox作爲推送通知服務。推送通知必須從應用程序本身創建,以便在設置的日期/時間由quickblox發送。該消息的目的是發送一個內容可用標誌,因此該應用程序可以在後臺獲取數據。使用quickblox和IOS實現預定推送通知sdk

搜索文檔,我認爲這可以通過'ApplePushEvent'來實現。但是我無法找到關於此的更多信息。我試圖添加以下代碼sendButtonDidPress節,送自己一個推送通知延遲5分鐘:

NSUInteger userID = ((QBUUser *)[_users objectAtIndex:[usersPickerView selectedRowInComponent:0]]).ID; 


NSDate *date = [[NSDate alloc]init]; 
NSDate *fiveMinFromNow = [date dateByAddingTimeInterval:300]; 

QBMApplePushEvent *APEvent = [QBMApplePushEvent pushEvent]; 
APEvent.active = NO; 
APEvent.name = @"test"; 
APEvent.type = QBMEventTypeOneShot; 
APEvent.date = fiveMinFromNow; 

APEvent.isDevelopmentEnvironment = YES; 

APEvent.usersIDs = [NSString stringWithFormat:@"%d", userID]; 


NSString *message = @"Testing APNS!"; 
NSMutableDictionary *payload = [NSMutableDictionary dictionary]; 
NSMutableDictionary *aps = [NSMutableDictionary dictionary]; 
[aps setObject:@"default" forKey:QBMPushMessageSoundKey]; 
[aps setObject:message forKey:QBMPushMessageAlertKey]; 
[payload setObject:aps forKey:QBMPushMessageApsKey]; 


QBMPushMessage *Pushmessage = [[QBMPushMessage alloc] initWithPayload:payload]; 



APEvent.pushMessage = Pushmessage; 

[QBMessages createEvent:APEvent delegate:self]; 



[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 

[messageBody resignFirstResponder]; 

但是什麼也沒有發生,我收到的NSLog錯誤「的UTF-8無效字節序列」。

下面是從日誌提取:

2014-04-28 11:32:52.508 Messages[1763:4603] +[QBMEvent messageToString:] -> message: { 
payload = "{\"aps\":{\"sound\":\"default\",\"alert\":\"TestingAPNS\"}}"; 
} 
2014-04-28 11:32:52.510 Messages[1763:4603] Performing async request: 

POST https://api.quickblox.com/events.xml 

headers:{ 
    "QB-SDK" = "iOS 1.8.4"; 
    "Qb-Token" = 33360a8735e91da82e588ffdbd5cd462b52420cf; 
    "QuickBlox-REST-API-Version" = "0.1.1"; 
} 

parameters:{ 
    "event[date]" = 1398677872; 
    "event[environment]" = development; 
    "event[event_type]" = "one_shot"; 
    "event[message]" =  "payload=eyJhcHMiOnsic291bmQiOiJkZWZhdWx0IiwiYWxlcnQiOiJUZXN0aW5nQVBOUyJ9fQ=="; 
    "event[name]" = test; 
    "event[notification_type]" = push; 
    "event[user][ids]" = 1026331; 
} 
2014-04-28 11:32:52.700 Messages[1763:1903] Request finished, response: 

headers:{ 
    "Access-Control-Allow-Origin" = "*"; 
    "Cache-Control" = "no-cache"; 
    Connection = "keep-alive"; 
    "Content-Type" = "application/xml; charset=utf-8"; 
    Date = "Mon, 28 Apr 2014 09:32:53 GMT"; 
    "QB-Token-ExpirationDate" = "2014-04-28 11:32:43 UTC"; 
    "QuickBlox-REST-API-Version" = "0.1.1"; 
    Server = "nginx/1.0.15"; 
    Status = "422 Unprocessable Entity"; 
    "Transfer-Encoding" = Identity; 
    "X-Rack-Cache" = "invalidate, pass"; 
    "X-Request-Id" = b65b8c46d1bd4c316e0758f047f1f1b1; 
    "X-Runtime" = "0.076002"; 
    "X-UA-Compatible" = "IE=Edge,chrome=1"; 
} 

body: 

error: 

<?xml version="1.0" encoding="UTF-8"?> 
<errors type="array"> 
    <error> 
    <code nil="true"/> 
    <message>invalid byte sequence in UTF-8</message> 
    </error> 
</errors> 

非常感謝您的幫助!

親切的問候,

Louwrens

回答

0

我得到的C與Quickblox

工作ontent可用標誌

我用下面的代碼Louwren的(user3580713)問題:

NSString *message = @"Testing APNS!"; 
NSMutableDictionary *payload = [NSMutableDictionary dictionary]; 
NSMutableDictionary *aps = [NSMutableDictionary dictionary]; 
[aps setObject:@"default" forKey:QBMPushMessageSoundKey]; 
[aps setObject:message forKey:QBMPushMessageAlertKey]; 
[payload setObject:aps forKey:QBMPushMessageApsKey]; 


QBMPushMessage *Pushmessage = [[QBMPushMessage alloc] initWithPayload:payload]; 

,並添加方法setObject後以下行:消息

[aps setObject:@"1" forKey:@"content-available"]; 

didReceiveRemoteNotification:fetchCompletionHandler現在當iPhone睡着時會被調用。我正在尋找一種方法來添加內容可用的標籤,這個問題幫助我弄清楚了。謝謝。希望這有助於某人。