2017-01-19 25 views
2

我在一個主iOS應用中成功使用QuickBlox並希望使用cocoapod'QuickBlox','〜> 2.7.5將功能擴展到共享擴展」。我需要在後臺發送消息而無需打開主應用程序。什麼是建議在iOS共享擴展中使用QuickBlox的過程

我使用下面的代碼沒有任何成功,只能首先設置發送文本。

[QBRequest logInWithUserLogin:USERNAME password:PASSWORD successBlock:^(QBResponse *response, QBUUser *user) { 
     if (user) { 
      user.login = USERNAME; 
      user.password = PASSWORD; 
      [[QBChat instance] connectWithUser:user completion:^(NSError * _Nullable error) { 

       QBChatDialog *chatDialog = [[QBChatDialog alloc] initWithDialogID:[settingsDict valueForKey:@"sendingID"] type:QBChatDialogTypeGroup]; 

       QBChatMessage *messagetosend = [QBChatMessage message]; 
       messagetosend.senderID = userQBID; 
       messagetosend.text = self.contentText; 
       messagetosend.dateSent = [NSDate dateWithTimeInterval:-12.0f sinceDate:[NSDate date]]; 

       [chatDialog joinWithCompletionBlock:^(NSError * _Nullable error) { 
        [chatDialog sendMessage:messagetosend completionBlock:^(NSError * _Nullable error) { 
         NSLog(@"%@",[error localizedDescription]); 
        }]; 

       }]; 
      } 
      ]; 
     } 
    } errorBlock:^(QBResponse * _Nonnull response) { }]; 

回答

0

您可以通過REST發送消息。通過REST發送並不需要連接聊天並加入對話框。

NSUInteger senderID = //Current User ID 
QBChatMessage *message = [QBChatMessage message]; 
message.text = intent.content; 
message.senderID = senderID; 
message.markable = YES; 
message.deliveredIDs = @[@(senderID)]; 
message.readIDs = @[@(senderID)]; 
message.dialogID = dialogID; 
message.dateSent = [NSDate date]; 

[QBRequest sendMessage:message successBlock:^(QBResponse * _Nonnull response, QBChatMessage * _Nonnull createdMessage) { 

} errorBlock:^(QBResponse * _Nonnull response) { 

}]; 
+0

感謝您的回覆,但我沒有看到任何名爲_sendMessage_的類方法。在QB 2.7.5中有沒有其他選擇? – Randy

+0

不幸的是,這個特性是在QB iOS SDK 2.9.1中添加的[更新日誌](https://quickblox.com/developers/IOS#Framework_changelog) –

+0

好吧我嘗試更新QB SDK 2.9.1中的Share擴展,但它崩潰了發送錯誤: 由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'+ [QBRequest sendMessage:successBlock:errorBlock:]:無法識別的選擇器發送到類0x3b735c' – Randy

相關問題