QuickBlox - can't connect to chat - ios

When my app starts, I am using QMServicesManager to:
- (void)logInWithUser:(QBUUser *)user
This should take care of authentication and logging in to the chat service.
The login API call to the chat service returns without an error but I am still getting an error once I try to send a message:
"You are not connected to chat."
Calling [QBChat instance]).isConnected returns false
At that point, if I try to to resolve this by calling QMChatService:
- (void)connectWithCompletionBlock:(QBChatCompletionBlock)completion
I get an error: "Attempting to connect while already connected or connecting."
Update:
Using extended logs of QuickBlox I can see where this begins. logging in to the chat service actually fails without returning any error in the return block.
Here is the log:
23:07:12.982 [ChatService] Connecting to Chat, host: chat.quickblox.com, user JID: ...
23:07:42.983 [ChatService] Did disconnect
Looks like it's timing out...
Any insights about that?

Try setting [QBSettings setLogLevel: QBLogLevelDebug]; when application starts in the AppDelegate.
This would enable you to see the QuickBlox Log in your Xcode console which will give a better message about what's happening.

Related

Maximo cannot deliever message to endpoint

I've created an interaction in maximo 7.6 and when I try to run it, I get this error message:
BMXAA1481E - Cannot deliver the message to the endpoint. Internal
Error
I've tried fixing it, but nothing works, does anyone how to fix this or even why does it pop up?

Google SignIn fails when serverClientID specified

I've got a server that interacts with Google Calendar on behalf of user. To do this it should obtain one-time access token from iOS application. I've referred to documentation, but have some issues with sign in.
I have started from "SignIn" example app (pod test Google > Sign In), provided it with my credentials (GoogleServices-Info.plist, bundleId). Then I signed it with my provision and started on iPhone 6, everything works like a charm.
Then I have added
[GIDSignIn sharedInstance].serverClientID = #"<my-server-client-id>";
in ViewController:viewDidLoad. I have unauthorised in app, launched it again. It opened auth screen (youtube.app, 10.31.11670) again, I selected the same account, but this time it launched my app without displaying permissions screen, -signIn:didSignInForUser:withError: method was called, but GIDGoogleUser was nil. Error stated
Error Domain=com.google.GIDSignIn Code=-1 "A potentially recoverable error occured. You may try again." UserInfo=0x17026af80 {NSLocalizedDescription=A potentially recoverable error occured. You may try again.}
I have tried several times, but each time I have received the same result. But if I comment ...serverClientID... it begins to work again.
Then I have launched this app in simulator and it authorised successfully using WebView and I received user.serverAuthCode.
I decided that problem was in YouTube.app, I uninstalled it from device, but the same problem happened with other Google applications.
Could you point me what is wrong with my singIn implementation?
PS
Finally I decided to use workaround and rewrote -canOpenUrl: in UIApplication subclass this way:
- (BOOL)canOpenURL:(NSURL *)url
{
if ([[url scheme] hasPrefix:#"com-google-gidconsent"] || [[url scheme] hasPrefix:#"com.google.gppconsent"]) {
return NO;
}
return [super canOpenURL:url];
}
And now it uses WebView authorisation and I can receive my one-time token. But this approach is crappy of course.

Sinch Client works but messages aren't being sent

I'm using sinch and I've gotten the client to work by registering a user, but I can't send a message. When I click my send button, nothing happens. The required methods that need to be implemented, such as messageFailed(), messageDelivered(), etc. are not being called either. Does anyone know why?
Have you registered the one more user? Can you enable logging and share the full log output.
See comment below, user tried to send message to self

Forced to create a new Quickblox session every time iOS app is opened

I am using the Quickblox iOS SDK 2.0.12
I have been following the instructions on Quickblox Authentication and Authorization here.
I call QBRequest createSessionWithSuccessBlock:, and then call QBRequest signUp: inside it's completion block, and then I call QBRequest logInWithUserLogin: inside the next completion block.
According to the above link, I should now have a Quickblox User Session after doing all of this. This all works perfectly and all of the calls are successful and I can see that the user is now in the Quickblox Admin Panel.
After doing this, if I make Quickblox requests they work fine. The only weird thing is that [[QBSession currentSession] currentUser] NSLogs as (null).
Anyways, if I stop running the app on the simulator, and then run the app again 10 minutes later, I check for persisted custom data so I can see if the user has already signed up or not. When the user has signed up, then I take them into the app instead of them needing to signup or login again.
Now, if I try to make any requests to Quickblox, I get the following exception:
Terminating app due to uncaught exception 'BaseServiceException', reason: 'You have missed the authorization call.
Please insert following code inside your application
[QBRequest createSessionWithSuccessBlock:errorBlock:];
Before any other code, that uses our service, but after setup credentials. Thank you.'
I don't understand why it's saying I need to create a session when I already just created one when the user first signed up. I understand that the session expires every 2 hours, but I am testing this very quickly and I am always receiving this error.
If I NSLog [QBSession currentSession] I can see that there is currently a QBSession object, but if I try to NSLog any of it's properties like sessionDetails, sessionExpirationDate, or currentUser they all log as (null).
As I know, only if you use this method - (void)startSessionForUser:(QBUUser *)user withDetails:(QBASession *)session expirationDate:(NSDate *)sessionDate , you can use this property correct. But I didn't ever use it.
For recreating a session I use [QBConnection setAutoCreateSessionEnabled:YES] and for chat I keep QBUUser in my Manager, and after entering foreground I check XMPP connection [[QBChat instance] isLoggedIn]. Maybee it may help you.

MUC implemention on ejabberd server using xmppFramework

I want to know that is it possible to create a chatroom and invite people ? I have setup ejabberd on my mac and implemented chat with single buddy following
this link but i want to implement MUC. I tried demo project of MUC which come with xmppframework available here ,but every time i get error 404 remote server not found. The delegate method
- (void)xmppRoomDidCreate:(XMPPRoom *)sender;
never gets called.
Instead
- (void)handleDidLeaveRoom:(XMPPRoom *)room
this method gets called. Has anyone successfully implemented MUC using localhost as server?If yes then please let me know the XMPP client you are using , because for ejabberd,it says remote server not found.
Did you try with conference.host (presumably conference.localhost) as MUC host ?

Resources