Coder Social home page Coder Social logo

quickblox / quickblox-ios-sdk Goto Github PK

View Code? Open in Web Editor NEW
396.0 45.0 360.0 1.26 GB

QuickBlox iOS SDK for messaging and video calling

Home Page: https://quickblox.com/developers/IOS

License: BSD 3-Clause "New" or "Revised" License

Objective-C 60.95% Swift 38.82% Ruby 0.05% Shell 0.05% C 0.13%
quickblox quickblox-ios-sdk objective-c sdk communication cocoapods messaging videocalling webrtc chat

quickblox-ios-sdk's Introduction

Discord server

QuickBlox

Core SDK Last SDK Version: 2.19.0

WebRTC SDK Last SDK Version: 2.8.1


QuickBlox - Communication & cloud backend platform which brings superpowers to your mobile apps.

QuickBlox is a suite of communication features & data services (APIs, SDKs, code samples, admin panel, tutorials) which help digital agencies, mobile developers and publishers to add great functionality to smartphone applications. Please read full iOS SDK documentation on the QuickBlox website, iOS section.

QuickBlox iOS Samples

This project contains QuickBlox iOS Samples and latest version of SDK, that includes:

Requirements

  • Xcode 12+
  • iOS 13+

How to start

Clone repository.

Open project

Choose sample you want to try, open it, launch. That's all.

Documentation

Detailed information for each sample is also available in README.md of each sample folder.

See also

quickblox-ios-sdk's People

Contributors

degterev avatar dmitryhapichq avatar forsarion avatar gitter-badger avatar illiachemolosov avatar isevendays avatar mutekey avatar pro100andrey avatar soulfly avatar sshaforenko avatar sshaforenkoqb avatar vladimirnybozhinsky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quickblox-ios-sdk's Issues

Error: unable to perform requested action: authorization failed

02ad3b8b98d34500a37d9d230f9979ed00

Hi,

I am using the QuickBlox SDK in my application and sometimes I do get this error.
When is this showed to the user and how can I capture an error like this because this error is not shown by my application itself but by the SDK?

Thanks in advance,

Wouter

[[QBSession currentSession] currentUser] always logs as null

The following is always logging as null for me:

[[QBSession currentSession] currentUser]

Other properties like sessionDetails and sessionExpirationDate will log successfully, but the currentUser property always logs as null.

If I'm not doing something wrong, and currentUser is always null, then a fix should be implemented to the SDK so that it begins storing the user object in that currentUser property.

Landscape video of Back Camera is 180° rotated

I'm experiencing an issue where the back camera is wrongly interpreted when received.
As the back camera goes into "Landscape Mode" (happens with both, left and right), the receiver will see the picture upside down.
However, the front camera will be correctly received!

Quickblox on device timeout and not giving any response

When i create session using the following command
[QBAuth createSessionWithDelegate:self];

then

"Connection closed due to timeout. Please check your internet connection."

it is happening just on device . My device is 100% connected to internet .but when i run the application then it stuck on my splash screen .
Please help me why it is so

rear camera image upside down in landscape

User1 rear camera image displays upside down on User2 device when User1 puts device in landscape.
This issue can be replicated by using the Video Chat test app.

  1. user1 calls user2.
  2. user1 chooses "Back" for video output
  3. user1 puts device into landscape mode.
  4. the image on user2 device will be flipped.
    this issue does not occur when user1 chooses "face" for video output

Multipart upload for large files

I have some video files that are saved to the user's iPhone and need to be uploaded to Quickblox. Here's is how I am doing this:

[QBRequest TUploadFile:self.videoData fileName:@"testing" contentType:@"video/quicktime" isPublic:YES successBlock:^(QBResponse *response, QBCBlob *blob) {
                //Success

            } statusBlock:^(QBRequest *request, QBRequestStatus *status) {

                // Update progress
                NSLog(@"completion : %f", status.percentOfCompletion);

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

This works fine most of the time, but when self.videoData is bigger, like 20MB, the app will crash. After doing research on StackOverflow, it looks like the right way to upload large files to a server is to do a multipart upload.

How can I do a multipart upload with Quickblox? I'm willing to use the REST API if the iOS SDK will not work. I just need to know if this is possible or not.

Multiple push certificates for 1 QuickBlox application

Hi,

The case is I have 1 codebase for my iOS applications and multiple targets (applications) with separated product ID's

I want to add multiple push certificates for my application on the Quickblox admin panel.

Is that possible?

Because these multiple targets have the same user base and they need to be able to chat with each other.

They would be able to chat with each other but they also need to receive push notifications. For the moment I can only upload 1 push certificate (production and development) but I need to upload a production certificate for every application I want to use using the same Quickblox application.

Hope this is possible?

Thanks

Wouter

arm64 not supported?

Adding QuickBlox to Xcode 5, using SDK 7.1:

Link error when building:
Ignoring file /Users/ramcor/Documents/.../Quickblox.framework/Quickblox, missing required architecture arm64 in file ...
...
Does it support arm64 architecture?

downloadFileWithUID method return file metadata and not actually the data

Hi!
Trying to use the method downloadFileWithUID with quickblox 2.0.10, I get as filedata only a parsed file including some metadata of the file, but not the actual file or its URL (to get it directly). Is this a bug of the latest version or is there a way to actually get the data?
Thanks for your help

Message ID is 0

Hi,

I am using Quickblox as backend for my iOS app.
I am integrating Quickblox chat in this app.
I need chat history also. So i tried this approach "http://quickblox.com/developers/Chat/1:1_Chat_history"

In that while receiving new message from another user, the message (QBChatMessage) ID is showing as always 0.

I faced the scenario like, User is in logged out state from chat. Another user is sending one or more messages to the current user. So once the current user logged in, the new messages will be coming from both chat delegate 'chatDidReceiveMessage:' and also in history query. To avoid duplicates i am overwriting those messages in already exists messages. So i need a primary key for messages from custom objects as well as chat. How to handle this scenario?

Any help would be much appreciated.

How can I get the status/progress of a QBRequest for both creating and retrieving a custom class?

Here is an example of how I retrieve objects of a custom class from Quickblox:

[QBRequest objectsWithClassName:@"My_Custom_Class" extendedRequest:getRequest successBlock:^(QBResponse *response, NSArray *objects, QBResponsePage *page) {
        // Success
    } errorBlock:^(QBResponse *response) {
        // Error
    }];

Here is an example of how I create new objects for a custom class in Quickblox:

QBCOCustomObject *object = [QBCOCustomObject customObject];
    object.className = @"My_Custom_Class";

    // Object fields
    [object.fields setObject:self.titleTextView.text forKey:@"Title"];
    [object.fields setObject:self.bodyTextView.text forKey:@"Body"];
    [object.fields setObject:self.userSession.fullName forKey:@"Author_Name"];
    [object.fields setObject:@"self.username" forKey:@"Author_Username"];

    [QBRequest createObject:object successBlock:^(QBResponse *response, QBCOCustomObject *object) {

        // Response

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

I need to be able to get the status/progress of these, so that I can show a loading/progress bar to my users based on actual progress made.

How can I do this?

QBCOCustomObject reads an array of integers as a string

I have a custom object with several simple fields and one array of integers.
The value of the array is [0,290427,100500]
I read a CO by [QBCustomObjects objectsWithClassName: extendedRequest: delegate:]
When I get the result the custom object's field contains a string with value @"100500" instead of the array.

As far as I noticed I can save the array without any errors and it's values I can see in web interface.

2013-09-18 15 05 07
2013-09-18 15 05 33

Recording of both soundtracks

Hi, I'm looking for a way to record one user's camera as well as both user's soundtracks!
Up to now all my tests merging the tracks failed. (I did some tests with the sample app.)

Has anyone accomplished this yet? Please let me know.

Cannot Delete Blob

I am attempting to delete a blob without success. I read on some SO posts Here and Here which mention you need to first set the blob to 0 and then delete the blob. Here is a simple piece of code and it does not work. I always get a 422 error, with NO error message when attempting to delete the blob.

I also came across the change log from version 1.8.3 which states:

QBUUser. blobID type changed to NSInteger. Now you can unset blob_id field of user - pass blob_id=-1

This does not work either

Any idea? Version 2.1

...

NSInteger blobId = self.qbUser.blobID;
self.qbUser.blobID = 0;

[QBRequest updateUser:self.qbUser successBlock:^(QBResponse *response, QBUUser *user) {
    if (response.success) { // Always a Success
        [QBRequest deleteBlobWithID:blobId successBlock:^(QBResponse *response) {
            // Never Gets Here...
        } errorBlock:^(QBResponse *response) {
            // !!! Always Gets Here!!! 422 Error
        }];
    }
} errorBlock:^(QBResponse *response) {
    // Doesn't Get Here Either...
}];

Chat messages are not being saved.

Five days ago my chat messages were saving just fine. Now they will not save. The logs indicate that the message has successfully been sent, but they no longer show up in the Quickblox admin panel. The dialog is successfully created, but the messages are never saved or show up in the Quickblox database.

It looks like other developers are having this issue as well. This StackOverflow question was asked 2 days ago: https://stackoverflow.com/questions/27678809/quickblox-messages-not-saved-group-dialog-creation-timeout

Also, I visited http://status.quickblox.com/ and it looks like "Private chat" and "Group chat" both have a red status of "failed."

Not able to join chatroom

The following error message is obtained when tried to send message in chatroom.
[QBChat sendChatMessage:toRoom:] -> return. Room is not joined.
Please check the sample app to reproduce the issue.

Not very useful error messages (and sometimes there aren't any error messages)

Hello!
During integration QuickBlox video chat in the mostly ready application I've had some troubles. As far as I saw, all of them can be fixed easily if error messages would be a little bit more informative.

There are links to my issues on stackoverflow:
http://stackoverflow.com/questions/18716146/forbidden-need-user-error-when-i-save-qbcocustomobject

http://stackoverflow.com/questions/18787730/quickblox-didnt-send-xmppstream-message

http://stackoverflow.com/questions/18741866/quickblox-chat-cant-perform-video-call

http://stackoverflow.com/questions/18717282/loading-qbcocustomobject-after-logging-in

Could you add some error messages for that cases (and may be for cases which I didn't found yet)?

Using NSMutableDictionary as input parameter in API

In several API methods used mutable input parameters, for example
[QBCustomObjects objectsWithClassName:(NSString *) extendedRequest:(NSMutableDictionary *) delegate:(NSObject *)]

In this method I can't write [QBCustomObjects objectWithClassName:@"name" extendedRequest:@{"key", "value"} delegate:self];

I think that methods should accept non mutable input parameters.

Memory Leak

Hi,
I'm using quickblox sdk in my application. When I profiled the app with instruments I could find memory leaks in quickblox sdk. I tried profiling the sample chat application and found memory leaks in the sample application as well.
Please refer the screenshot of instruments for sample chat app.
Kindly provide a solution.
screen shot 2014-08-14 at 5 39 24 pm
Thanks

There is no success block in [[QBChat instance] sendMessage:message sentBlock:

Right now when you send a message, and call the method below, the block only fires if there has been an error. I am assuming this block is only being fired when there is an error, but at the least it should still be fired and passed a nil error object.

Otherwise there is no way to tell if the message object was successfully sent to the Quickblox database. As far as I can tell, no other chat delegate methods are being called when a message is successfully sent to Quickblox.

Is there currently a delegate method being called or a notification that I can listen for to make sure that my message objects are successfully being uploaded to Quickblox?

[[QBChat instance] sendMessage:message sentBlock:^(NSError *error) {

            }
       }];

Custom parameters with video call

When I call
[QBVideoChatInstance callUser:userID conferenceType:QBVideoChatConferenceTypeAudioAndVideo customParameters:customParameters;

the other side calls the QBChatDelegate method:
-(void) chatDidReceiveCallRequestFromUser:(NSUInteger)userID withSessionID:(NSString*)sessionID conferenceType:(enum QBVideoChatConferenceType)conferenceType;

So custom parameters have not been sent to the other side.

I understand that your enterprise clients may not need this feature, but I ask you to fix this issue, please.

does not start all dialogs at a time

i m trying to start all dialogs at a time, for that i wrote startallrooms method in DialogsViewController.h which i m calling from :
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (self.dialogs.count>0) {
[self startallrooms];
}
return [self.dialogs count];
}
-(void)startallrooms
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chatDidReceiveMessageNotification:)
name:kNotificationDidReceiveNewMessage object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chatRoomDidReceiveMessageNotification:)
name:kNotificationDidReceiveNewMessageFromRoom object:nil];

for (int i=0; i<self.dialogs.count; i++) {
    QBChatDialog *dialog = self.dialogs[i];
    QBChatRoom *chatRooms;
    chatRooms = [dialog chatRoom];
    [[ChatService instance] joinRoom:chatRooms completionBlock:^(QBChatRoom *j) {
        // joined
    }];
}

}
It is giving an error : EXC_BAD_ACCESS in following method from ChatService.m

  • (void)chatRoomDidEnter:(QBChatRoom *)room{
    }

Here is quickblox repository where i have tried to implement "Start All Dialogs At a Time" : https://github.com/sunillohar/quickblox

EndpointsAPIStorage retrieveEndpoints Bad Access

We are currently using version 1.9.2 of the iOS SDK in a production app and the iOS 8 update has caused frequent crashing when trying to retrieve custom objects. It's always the same Quickblox method, [EndpointsAPIStorage retrieveEndpoints]. I noticed you have implemented a fix in version 2.0.9 of the SDK. Are you able to implement the same fix into version 1.9.2? Or do you have any workarounds?
screen shot 2014-11-21 at 09 29 53

Quickblox unable to send message chat

I use the sample code in github for ios sdk and I added my account details but when I send a message in chatviewcontroller I got this log: -[QBChat sendMessage:] -> return. You have to be logged in in order to use Chat API I tried many solutions with no success

note that before that I get :
-[QBChat loginWithUser:] -> Connecting to Chat, hostName: muc.chat.quickblox.com
-[QBChat loginWithUser:] -> Chat server endpoint: muc.chat.quickblox.com, User JID:

Logout then Login issue

I am facing issue in doing logout then again login. I have logout user session by using QBRequest static function logOutWithSuccessBlock. But now login using [[ChatService instance] loginWithUser:currentUser completionBlock is stuck somewhere in the code. Please elaborate logout and login scenario.

Quickblox iOS - group Chat

Hi All ,

We have implemented group chat functionality but we are facing one issue .

After joining group when i come out from dialog i am not able to receive messages of group , so how i can increment badge counter of unread message , though i am getting incoming messages in one to one chat .

but in group chat : not able to receive incoming messages from below method .

  • (void)chatRoomDidReceiveMessage:(QBChatMessage )message fromRoomJID:(NSString )roomJID

Delay in video call

Hi,
I have implemented video call in my application. But there is a long delay in video between the sender and receiver. Sometimes I'm not able to hear the voice also. I'm using the starter tier. Will the problem be solved, If I upgrade the plan?

Trouble uploading video files

I was able to successfully upload several videos earlier today, but for the past 4 hours I have not been able to upload any. The new file shows up in the Content module, but it just gets stuck at a status of "Not uploaded."

In Xcode while the app is running the CPU hovers around 97-99%. Here's the code I'm using:

[QBRequest TUploadFile:[NSData dataWithContentsOfURL:movieURL] fileName:@"mynewvideo" contentType:@"video/quicktime" isPublic:YES successBlock:^(QBResponse *response, QBCBlob *blob) {
                NSUInteger uploadedFileID = blob.ID;

            } statusBlock:^(QBRequest *request, QBRequestStatus *status) {
                // handle progress
                NSLog(@"progress");

            } errorBlock:^(QBResponse *response) {
                NSLog(@"error: %@", response.error);
            }];

The success block never fires. The status block never fires, and the failure block never fires either. I've kept the app running for 10 minutes now and it's just stuck trying to upload the video file to Quickblox.

Can't change audio session route

After initiating WebRTC call the app crashes when trying to redirect audio to speaker:
[QBRTCSession setAudioCategoryOptions:]: unrecognized selector sent to instance

The only solution I've found is to manually override audio session output when connectedToUser:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];

Thanks,
Dragos

Chat message are not receiving after reconnecting

I have problem with sending messages after reconnecting with the quickblox server.If I disconnect my internet from device then again reconnect, the chat messages is not sending. But the log shown it was sent , not showing the receive log. The reconnect code works fine but cannot chat anymore.

when it was working as fine,

2013-10-12 10:48:37.033 football365[1000:8517] -[QBChat xmppStream:didSendMessage:] -> Message: hello
2013-10-12 10:48:37.463 football365[1000:8517] -[QBChat xmppRoom:didReceiveMessage:fromNick:] -> message: hello fromNick: 578338
when message only sent, the received log is not shown.

2013-10-12 10:48:37.033 football365[1000:8517] -[QBChat xmppStream:didSendMessage:]

Getting Video call pop up after decline video call

Hi,
I am using QuickBlox video call API.

Sometime I am getting unnecessary video call pop up after declining video call.
Steps :

1.Call User2 from User1 and decline it from User2 device.
Result: Declined pop up appear that is ok.

2.Now call User1 from User2 and decline.
Result : unnecessary video call pop up appearing on again if user decline call

Please fix this issue if it is possible
Thanks

Delete/leave 1:1 private chat

Hi,

I am trying to delete/leave a private chat for the 2 users in a private chat.

This works on for 1 user (the dialog is deleted locally and on the server) but how can I delete the dialog for the other user? I don't get a notification on the other device and the dialog still exists when I fetch all the dialogs.

I am using the [QBChat deleteDialogWithID:dialog.ID .. method.

Thanks in advance,

Wouter Goossens

<Quickblox/Quickblox.h> not found

I have download sample-chat demo from github. When I tried compile it shows that <Quickblox/Quickblox.h> not found in .pch file

How to resolve it ???

12 copy

CocoaPods Support

Create a pod and add it to the CocoaPod Specs repository to simplify installation and package management

iOS SDK sources

Hello, Igor Khomenko.

I've post many issues last days and not all of them have been answered. As I see a lot of problems can be solved if one have access to SDK sources. Some of problems even don't require to make any changes in SDK. The understanding of behavior under the hood is very valuable thing.

I don't ask you to release SDK sources as open source, nor even ask your to release the full SDK source. I understand that you can use some proprietary components or something else. May be you could get access to the sources under NDA?

By any way I hope that access to the SDK sources can reduce the amount of problems for you and us.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.