Giter Site home page Giter Site logo

quickblox / q-municate-ios Goto Github PK

View Code? Open in Web Editor NEW
163.0 28.0 86.0 1.1 GB

Q-municate iOS repository

Home Page: http://q-municate.com

License: MIT License

Swift 100.00%
chat swift video-call objective-c chat-dialogs audio video messaging whatsapp xmpp

q-municate-ios's Introduction

Source code removed from the public access, if you are interested in Q-municate please contact us

Q-municate is an open source code of chat application with full range of communication features on board (such as messaging, file transfer, push notifications, audio/video calls, etc.). We are inspired to give you chat application out of the box. You can customise this application depending on your needs. As always QuickBlox backend is at your service: https://quickblox.com/plans/ Find the source code and more information about Q-municate, as well as installation guide, in our Developers section: https://quickblox.com/developers/q-municate This guide is brought to you from QuickBlox iOS team in order to explain how you can build a communication app on iOS using QuickBlox API. It is a step by step guide designed for all developer levels including beginners as we move from simple to more complex implementation. Depending on your skills and your project requirements you may choose which parts of this guide are to follow. Enjoy and if you need assistance from QuickBlox iOS team feel free to let us know by creating an issue. Q-municate is a fully fledged chat application using the Quickblox API.

1. Requirements & Software Environment

1.1 QuickBlox iOS SDK

CocoaPods CocoaPods CocoaPods

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

1.2 WebRTC

CocoaPods CocoaPods CocoaPods

Q-municate uses WebRTC for video and audio calling meaning it’s a great cross-platform solution. WebRTC itself it open-source, so you can modify the code as much as you wish, or you can trust the thousands of skilled developers who contributed to it’s development.

The VideoChat code sample allows you to easily add video calling and audio calling features into your iOS app. Enable a video call function similar to FaceTime or Skype using code sample as a basis.

2. QuickBlox modules

Q-municate application uses following:

3. Features

It includes such features as:

  • The App supports both landscape and portrait mode.
  • The iOS application has English language interface and easy to add localisation.
  • Three sign-up methods as well as login – Facebook, Firebase (phone number) and with email/password
  • Call Kit
  • Share extension
  • Siri extension for messaging
  • View list of all active chat dialogs with message history (private and group chat dialogs)
  • View, edit and leave group chat dialogs
  • View and remove private chat dialogs
  • Search: local dialogs search, contacts search and global users search
  • Create and participate in private and group dialogs
  • Managing, updating and removing dialogs
  • Audio and Video calls (using QuickBlox WebRTC Framework)
  • Edit own user profile
  • Reset password and logout
  • See other users profile
  • Pull to refresh for dialogs list, contacts list and user info page

Please note all these features are available in open source code, so you can customise your app depending on your needs.

4. Screens

4.1 Welcome

Figure 4.1 Welcome screen

Available features:

  • Connect with Phone – this button allows user to enter the App with his/her phone number using Firebase. If tapped will be shown User Agreement pop-up.
  • Login by email or social button – By tapping this button action sheet with extra login methods will pop up. There is such methods as Facebook login and login by email/password.
  • Login with Facebook allows user to enter the App with his/her Facebook credentials. If tapped will be shown User Agreement pop-up.
  • If App has passed Facebook authorisation successfully, the App will redirect user into chat dialogs list screen.
  • Login by email/password allows user to enter the App if he/she provides correct and valid email and password. By tapping on this button user will be redirected to the login screen.

Please note, that there is no longer a possibility to sign up user using email and password method. You can only sign up using Phone number and/or Facebook credentials.

4.2 Login with email/password

Figure 4.2 Login with email screen

Available features:

  • Fields set:
    • Email – text/numeric/symbolic fields 3 chars min - no border, mandatory (email symbols validation included)
    • Password – text/numeric/symbolic field 8-40 chars (should contain alphanumeric and punctuation characters only) , mandatory
  • Buttons:
    • Back - returns user back to welcome screen
    • Done - performing login after fields validation using provided email and password
    • Forgot password - opens forgot password screen

4.3 Forgot password

Figure 4.3 Forgot password screen

  • Fields set:
    • Email – text/numeric/symbolic fields 3 chars min - no border, mandatory (email symbols validation included)
  • Buttons:
    • Back - returns user back to welcome screen
    • Reset - performing password reset

4.4 Tab Bar

Tab bar is a main controller of the application. It consists of such pages:

  • Chat dialogs list (main page)
  • Contacts list
  • Settings

4.5 Chat Dialogs List

Figure 4.4 Dialogs screen

  • Search:
    • Search allows user to filter existing dialogs in local cache by its names.
  • Buttons:
    • Right bar button - redirects user to new dialog screen

4.6 New Message

Figure 4.5 New message screen

If you will select only 1 contact - private chat will be opened (if existent) or created if needed. Otherwise group chat will be created.

  • Search:
    • Tag field allows you to search through contacts full names.
  • Buttons:
    • Right bar button - creates chat dialog
    • Back - return user back to chat dialogs page

4.7 Chat

There is a possibility to send:

  • Text messages
  • Images from gallery and camera
  • Videos from gallery and camera
  • Audio records using input toolbar right button

Available features:

  • Sharing and forwarding
  • Copying image attachmnets and text messages

4.8 Private Chat

Figure 4.6 Private chat screen

Buttons:

  • Right bar buttons - Audio and Video call buttons, you can only call user if he is in your contact list
  • Back - returns user back to chat dialogs list screen
  • Navigation bar title - redirects user to opponent profile page

4.9 Group Chat

Figure 4.7 Group chat screen

Buttons:

  • Right bar button and navigation bar title - redirects user to group chat info screen
  • Back - return user to chat dialogs list screen
  • Opponent user avatars - by tapping opponent user avatars in messages you will be redirected to the info page of that user

4.10 Group Chat Info

Figure 4.8 Group chat info screen

Fields/Buttons:

  • By tapping on group avatar you can change it by taking a new photo or selecting it from library
  • By tapping on group name you will be redirected to group name change screen
  • By tapping on Add member field you will be redirected to contacts screen in order to select users to add
  • By tapping on any user in members list you will be redirected to their info page (except your own user in list)
  • By tapping Leave and remove chat field - you will leave existent group chat and delete it locally

4.11 Contacts List

Figure 4.9 Contacts list screen

Search:

  • Search has two scopes buttons:
    • Local search - allows user to filter existing contacts by their names.
    • Global search - allows user to find users and see their profiles by full names.

Figure 4.10 Search screen

4.12 User Info

Figure 4.11 User info screen

Fields/Buttons

  • Contacts actions:
  • Send message - opens chat with user, if there is no chat yet - creates it
  • Audio Call - audio call to user
  • Video Call - video call to user
  • Remove Contact and Chat - deleting user from contact list and chat with him

Other user actions:

  • Add contact - sending a contact request to user or accepting existing one

4.13 Settings

Figure 4.12 Settings screen

Fields/Buttons:

  • Full name, status and email fields will redirect you to update field screen, where you can change your info.

Figure 4.13 User status screen

  • By tapping on avatar action sheet will be opened. You can either take a new picture or choose it from library to update your user avatar.
  • Push notification switch - you can either subscribe or unsubscribe from push notifications.
  • Tell a friend - opens share controller where you can share this awesome app with your friends :)
  • Give feedback - feedback screen, where you can send an email to us with bugs, improvements or suggestion information in order to help us make Q-municate better!

Figure 4.14 Feedback screen

5. Audio and Video Calls

Q-municate using QuickBlox WebRTC SDK as call service. You can find more information on it here.

5.1 Calls controller

Call controller has 6 states:

  • Incoming audio call
  • Incoming video call
  • Outgoing audio call
  • Outgoing video call
  • Active audio call
  • Active video call

Call controller is been managed by QMCallManager, basically call manager allocating it with a specific state, whether it is an incoming or outgoing call, then call controller changing its state to active one if required user accepts it.

5.2 Audio Call

You can see down below Incoming, outgoing and active audio call screens.

Figure 5.1 Audio call screen

Toolbar buttons

  • Incoming call:
    • Decline - declines call and closes received session and controller
    • Accept - accepts call and changes call controller state to Active audio call
  • Outgoing and active call:
    • Microphone - disables microphone for current call
    • Speaker - whether sound should be played in speaker or receiver. Default for audio calls is receiver.
    • Decline - hanging up current all and closing controller

5.3 Video Call

You can see down below Incoming, outgoing and active video call screens.

Figure 5.1 Video call screen

By default sound for video calls is in speakers.

  • Incoming call:
    • Decline - declines call and closes received session and controller
    • Accept - accepts call and changes call controller state to Active video call
  • Outgoing and active call:
    • Camera - enables/disables camera for current call
    • Camera rotation - changes camera for current call (front/back)
    • Microphone - disables microphone for current call
    • Decline - hanging up current all and closing controller

5.4 Call Kit

CallKit allows to integrate calling services with other call-related apps on the system. CallKit provides the calling interface, and we handle the back-end communication with our VoIP service. For incoming and outgoing calls, CallKit displays the same interfaces as the Phone app, giving Q-municate application a more native look and feel.

Figure 5.1 Call controller screen

6. Extensions

6.1 Share extension

Share extension gives users a convenient way to share content with other entities. Available types for sharing:

  • Locations
  • URL
  • Images
  • Videos
  • Audios

Figure 6.1 Share extension screen

6.2 Intents App Extension(SiriKit for messaging)

An Intents app extension receives user request to send a message from SiriKit and turns it into app-specific actions.

Figure 6.2 Sending message via SIRI screen

7. Code explanation

You can see basic code explanation down below. For detailed one please see our inline documentation for header files in most classes. We have tried to describe as detailed as possible the purpose of every class and its methods. If you have any questions, feel free to let us know by creating an issue.

7.1 Storyboards

We have separated Q-municate for modules, such as:

  • Auth
  • Main
  • Chat
  • Settings

Each module has its own storyboard, all storyboards are linked with storyboard links (feature available since Xcode 7 and iOS 8+).

8. How to build your own Chat app

If you want to build your own app using Q-municate as a basis, please follow our detailed guide here.

9. Contributing

Features

  1. Fork it ( https://github.com/[my-github-username]/q-municate-ios/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'My new feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Issues

If you find an issue, please create an issue.

10. License

Apache License, Version 2.0. See LICENSE file.

q-municate-ios's People

Contributors

antondyach avatar forsarion avatar illiachemolosov avatar isevendays avatar pro100andrey avatar soulfly 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

q-municate-ios's Issues

[BITCODE] error when uploading archieve to appstore

ERROR ITMS-90635: "Invalid Mach-O Format. The Mach-O in bundle "HeartKeeper.app/Frameworks/Quickblox.framework" isn’t consistent with the Mach-O in the main bundle. The main bundle Mach-O contains armv7(machine code) and arm64(machine code), while the nested bundle Mach-O contains armv7(bitcode) and arm64(bitcode). Verify that all of the targets for a platform have a consistent value for the ENABLE_BITCODE build setting."

Photos not being shown on q-municate chat app

There is a 500 server error:

2017-02-28 17:38:02.771521 Q-municate[49057:12368391] [QBCore] Response error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x170429d00> { URL: https://qbprod.s3.amazonaws.com/ } { status code: 500, headers {
Connection = close;
"Content-Type" = "application/xml";
Date = "Tue, 28 Feb 2017 20:38:02 GMT";
Server = AmazonS3;
"Transfer-Encoding" = Identity;
"x-amz-id-2" = "OTaefrYWKfRspJgrrrh0G/TcwNEarta4gQmd6HXTV73TOnSFY4Wz3kl7so2dse9S6FqxUn/lpEM=";
"x-amz-request-id" = 934370ED267447E4;
} }, NSErrorFailingURLKey=https://qbprod.s3.amazonaws.com/, com.alamofire.serialization.response.error.data=<3c3f786d 6c207665 7273696f 6e3d2231 2e302220 656e636f 64696e67 3d225554 462d3822 3f3e0a3c 4572726f 723e3c43 6f64653e 496e7465 726e616c 4572726f 723c2f43 6f64653e 3c4d6573 73616765 3e576520 656e636f 756e7465 72656420 616e2069 6e746572 6e616c20 6572726f 722e2050 6c656173 65207472 79206167 61696e2e 3c2f4d65 73736167 653e3c52 65717565 73744964 3e393334 33373045 44323637 34343745 343c2f52 65717565 73744964 3e3c486f 73744964 3e4f5461 65667259 574b6652 73704a67 72727268 30472f54 63774e45 61727461 3467516d 64364858 54563733 544f6e53 46593457 7a336b6c 37736f32 64736539 53364671 78556e2f 6c70454d 3d3c2f48 6f737449 643e3c2f 4572726f 723e>, NSLocalizedDescription=Request failed: internal server error (500)}
2017-02-28 17:38:02.776752 Q-municate[49057:12368391] [QBCore] Response error reasons: (null)

QuickBlox error

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: [QMCore instance].currentProfile.userData'

SDK 2.3

Hi,

Since there was a major upgrade from Quickblox to version 2.3, is upgrading the code to that version planned?

Thanks

Wouter

Dialogs cache issue

Hello,

Below code returns 0 dialogs even though there are two dialogs exist. (Both are public dialog)
func dialogs() -> [QBChatDialog]? { return ServicesManager.instance().chatService.dialogsMemoryStorage.dialogsSortByUpdatedAtWithAscending(false) }
While if use below code, it returns two dialogs

ServicesManager.instance().cachedDialogs { (dialogs) in

}

Not sure, What's going wrong.

Searching for new contacts always returns 'No Results'

2016-02-02 00:24:37.672 Q-municate[4663:1404220] [QBCore] Request URL:https://api.quickblox.com/users/by_full_name.json?full_name=M&page=1&per_page=50
2016-02-02 00:24:37.674 Q-municate[4663:1404220] [QBCore] Request method: GET
2016-02-02 00:24:37.675 Q-municate[4663:1404220] [QBCore] Request parameters:{
"full_name" = M;
page = 1;
"per_page" = 50;
}
2016-02-02 00:24:37.675 Q-municate[4663:1404220] [QBCore] Request headers: {
"Content-Type" = "application/json";
"QB-OS" = "iOS 9.2.1";
"QB-SDK" = "iOS 2.6.1.1";
"QB-Token" = 09f8699c900b665e51fcc302b705f1e4fe3f69c8;
"QuickBlox-REST-API-Version" = "0.1.1";
}
2016-02-02 00:24:38.084 Q-municate[4663:1404436] [QBCore] Response error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: forbidden (403)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x159243cb0> { URL: https://api.quickblox.com/users/by_full_name.json?full_name=M&page=1&per_page=50 } { status code: 403, headers {
"Access-Control-Allow-Origin" = "*";
"Cache-Control" = "no-cache";
Connection = "keep-alive";
"Content-Length" = 33;
"Content-Type" = "application/json; charset=utf-8";
Date = "Tue, 02 Feb 2016 08:24:38 GMT";
"QB-Token-ExpirationDate" = "2016-02-02 10:14:35 UTC";
"QuickBlox-REST-API-Version" = "0.1.1";
Server = "nginx/1.8.0";
Status = "403 Forbidden";
"X-Rack-Cache" = miss;
"X-Request-Id" = b9617af21d6df7675e76270acb19c36e;
"X-Runtime" = "0.063898";
"X-UA-Compatible" = "IE=Edge,chrome=1";
} }, NSErrorFailingURLKey=https://api.quickblox.com/users/by_full_name.json?full_name=M&page=1&per_page=50, com.alamofire.serialization.response.error.data=<7b226572 726f7273 223a7b22 62617365 223a5b22 466f7262 69646465 6e225d7d 7d>, NSLocalizedDescription=Request failed: forbidden (403)}

How to hang up a single user from conference call?

I have seen a function in Android SDK
public void procHangUpOpponent(Integer opponentID,
Map<String,String> userInfo)
Close channel with concrete opponent
Parameters:
opponentID -

But there is no any method in ios SDK which can be called to hang up a specific user.

Any help will be appreciated

getting error while compiling project.

Hello sir, Iam getting error while compiling project. Errors are:

  • (void)authenticateWithCompletion:(DGTAuthenticationCompletion)completion __TVOS_UNAVAILABLE;

Expected ":" after __TVOS_UNAVAILABEL
Using xcode 7.0

What to do.
Thanks

After closing app and re-opening, previous chats disappear

When I close the app and re-open it, my previous chats disappear. If I log out then log in again, they come back. All the time the chats and contacts etc remain visible in QuickBlox.
Any assistance with this much appreciated.
Thanks,
Martyn.

dialogID nil

I'm facing NSParameterAssert failure for "dialogID" in "chatDidReadMessageWithID" and "chatDidDeliverMessageWithID" methods in "QMChatService" class.

here is the log

2015-12-01 16:22:44.244 Q-municate[368:36987] [ChatService] Presence SNT:
2015-12-01 16:22:44.245 Q-municate[368:36987] [ChatService] IQ SNT:
2015-12-01 16:22:44.245 Q-municate[368:36987] [ChatService] Presence SNT:
2015-12-01 16:22:44.245 Q-municate[368:36987] [ChatService] IQ SNT:
2015-12-01 16:22:44.525 Q-municate[368:36945] [ChatService] Message RCV: Offline Storage - chat.quickblox.com
2015-12-01 16:22:44.526 Q-municate[368:36853] *** Assertion failure in -[QMChatService chatDidReadMessageWithID:dialogID:readerID:], /Users/praveenliyanaarachchi/Downloads/q-municate-ios-master 2/Pods/QMServices/QMChatService/QMChatService/QMChatService.m:232
2015-12-01 16:22:44.528 Q-municate[368:36853] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: dialogID != nil'
*** First throw call stack:
(0x184060f48 0x198c13f80 0x184060e18 0x184f54a1c 0x100263d38 0x184066a70 0x183f644d4 0x183f68e00 0x10032690c 0x184064a30 0x183f68cac 0x1002eb75c 0x184066a70 0x183f644d4 0x183f68e00 0x100380ac4 0x1011b9ca8 0x1011b9c68 0x1011bf710 0x1840181f8 0x184016060 0x183f44ca0 0x18f180088 0x18965cffc 0x1000c56b4 0x1994628b8)
libc++abi.dylib: terminating with uncaught exception of type NSException

Upgrade to last SDK version

Hi,
I'm evaluating your solution. Q-Communicate would be a possible app to reuse but the problem is that it's using a previous QuickBlox SDK, version 2.6.5. Current SDK version is v2.7. Migrating to v2.7 requires some extra work, not convenient for me. In order to going forward with the decision, could you please help with some answers:
-Till what date will you accept in the server requests from version 2.6.5?
-Any requests/functions implemented in v2.6.5 have become out of service?

Thanks.

Error: Build Issue in QMMessagesMemoryStorage.m file

Hi,
I want to integrate chat and video feature into my app using this demo but while I installed the pod 'QuickBlox', '~> 2.9' and getting the so many errors in QMMessagesMemoryStorage.m file.

Build Errors

//Expected type error
- (void)addMessage:(QBChatMessage *)message forDialogID:(NSString *)dialogID;
//Expected )
- (void)addMessages:(NSArray QB_GENERIC(QBChatMessage *) *)messages forDialogID:(NSString *)dialogID;
//Expected )
- (void)replaceMessages:(NSArray QB_GENERIC(QBChatMessage *) *)messages forDialogID:(NSString *)dialogID;
//Expected a type
- (void)updateMessage:(QBChatMessage *)message;
//Expected )
- (NSArray QB_GENERIC(QBChatMessage *) *)messagesWithDialogID:(NSString *)dialogID;

Can you help me to resole this issue?

Thanks

Returned dialogs list is not accurate in two ways, help needed!

By using this method: [ServicesManager.instance.chatService.dialogsMemoryStorage dialogsSortByUpdatedAtWithAscending:NO], we expect to get all the dialogs the current user is in, but the returned dialogs list is not accurate in two ways:

  1. It lost some dialogs, and we're sure data limit of 'page' parameter is not the reason here;
  2. It still returns the dialogs where the user has already left.

Could you please help have a check? Or is there some other way to get the correct dialogs list?

Thank you very much.

====================== Source Code ======================
{
// Retrieving dialogs sorted by updatedAt date from memory storage.
return [ServicesManager.instance.chatService.dialogsMemoryStorage dialogsSortByUpdatedAtWithAscending:NO];
}
====================== Source Code ======================

Chats are not being saved in Core data

I am using Qmunicate to develop my own app. I am not able to get chats offline from core data. Getting the following error.

error: -executeRequest: encountered exception = I/O error for database at /Users/latika/Library/Developer/CoreSimulator/Devices/49C916CC-FDF0-46EA-BD7B-9D73B3F168C9/data/Containers/Data/Application/7FB3534D-EC37-4BE1-A525-F8FCBA44D62C/Library/Application Support/Q-municate/sample-cache. SQLite error code:6922, 'disk I/O error' with userInfo = {
NSFilePath = "/Users/latika/Library/Developer/CoreSimulator/Devices/49C916CC-FDF0-46EA-BD7B-9D73B3F168C9/data/Containers/Data/Application/7FB3534D-EC37-4BE1-A525-F8FCBA44D62C/Library/Application Support/Q-municate/sample-cache";
NSSQLiteErrorDomain = 6922;
}

How to check contact into chat

Hi,
I am using the Q-municate-iOS chat application for may project.
I created the account into QB and I am able to run the project.
When I signed in through two mobile number in same device but I am confuse how to chat. I am not getting other contact into my Contact list of app.
Everything looks like blank.

Please let me know any error

Forbidden.need user. Bad gateway. connection related issues.

Hi There,

I am facing chat connection related issues in iOS q-municate (v2.2.1) project. Please find the attached details and logs below and any help/suggestions would be greatly appreciated.

errors.rtfd.zip - removed (Pro100Andrey)
Thanks,

Chat dialogs list screen does not list any previous chat history after clearing app from device memory

I downloaded the latest iOS app and found out that the Chat dialogs list screen doesn't list any previous chat history after clearing the app from device memory. I would need to go to Contacts screen, and click on individual contact and Send message link to retrieve the existing chat history, then go back to Chats screen and the chat history will then appear.

Logout and relogin doesn't have this issue but after clearing the app from the device memory, this issue occurs. I'm testing with my connected iPhone 7 in Xcode.

Anyone else is facing this issue?

After login, I am unable fetch my local (Device) Contacts

simulator screen shot jul 11 2016 4 03 26 pm

Hi,

We are unable to fetch the device contact list the iOS application.

  1. We allowed in settings of our application(Web) to download users :- Check "Allow to retrieve a list of users".
  2. We search the users Locally and Globally but nothing happens.

Any help would be appreciated.

Thanks,

Not able to run the project

I downloaded the project Q-municate-ios. I tried to run the project and when i entered the Phone number. It shows the error "Something went wrong, Please try again later".

Please see the screen shot.
simulator screen shot - iphone 8 plus - 2017-11-13 at 17 58 04

Offline status not updated

When one user logs out, the other users continue to see them in 'online' instead of 'offline'. In the test, only after 20 minutes the correct status appeared.

To reproduce the error:
1)Run app in simulator, login as user A with Facebook
2)Run app in iPhone 5s, login as user B
3)From each app, add user as contact user A or B
4)In app (1), logout user A
5)In app (2) The status for user A should appear as 'offline', instead we can see the 'online' label in several views (Contacts, Contact details, ...)

q-comunicate version: 29/Feb/2016
IOS version (iPhone): 9.2.1
IOS version (sim): 8.4

Login problem

After replacing the credentials still i'm able to login into.
Please guide me
screen shot 2017-12-05 at 6 30 17 pm

Errors while compiling

I don't know what is the problem but I'm not able to build it with XCode 6.3. It's giving me errors on many places.
My OS X Version is: 10.11 (15A282b) El Capitan.

Can You please give me any solution to build it successfully. That would be good practise for my project.

Thanks.

Recent Dialog List TableView not returning any value

Hi I have been trying to move the placement of "Chat" Tab to second tab, and the tableview not return anything if it placed on the second.. but If I put it to the first tab, it works normal...

Why is this happening?

Apple Reject Binary for using UIBackgroundMode for Audio.

Guideline 2.5.4 - Performance - Software Requirements

Your app declares support for audio in the UIBackgroundModes key in your Info.plist but did not include features that require persistent audio.

The audio key is intended for use by apps that provide audible content to the user while in the background, such as music player or streaming audio apps. Please revise your app to provide audible content to the user while the app is in the background or remove the "audio" setting from the UIBackgroundModes key.

Next Steps

The audio key is intended for use by apps that provide audible content to the user while in the background, such as music player or streaming audio apps. Please revise your app to provide audible content to the user while the app is in the background or remove the "audio" setting from the UIBackgroundModes key.

We have just change the first screen where we have use our own two-step verification system using Sinch SDK. And second change is in Contact Screen. We display users to each other depend on phone number saving in their iPhone Contact.
We have faced this reject many time. We first make our own application from scratch we get the same rejection reason and then we decide to use Q-Municate as it is apple approved application but after making above mentioned changes in your app and then submit we face that same previous issue on UIBackgroundModes for audio.

QMcore Crash

I have used "Q-municate" code into my test app , I am able to compile the code. But while running the code my app is crashing at
[QMContactListCache setupDBWithStoreNamed:kQMContactListCacheNameKey applicationGroupIdentifier:[self appGroupIdentifier]];
in QMCore class.
Can you please help me in resolving this issue, also if you can let me know all steps to integrate Q-municate app in to my app directly, and customise it.

Logs for your reference :

2017-05-08 11:28:03.185868 TestChat[1585:38748] [MC] Reading from private effective user settings.
2017-05-08 11:28:20.994 TestChat[1585:38748] Init - QMAuthService service...
2017-05-08 11:28:20.994 TestChat[1585:38748] Init - QMChatService service...
2017-05-08 11:28:20.999 TestChat[1585:38802] [QBCore] Restoring QBSession, status = -25300. See "Security Error Codes" (SecBase.h)
2017-05-08 11:28:21.003 TestChat[1585:38748] Init - QMUsersService service...
2017-05-08 11:28:21.003 TestChat[1585:38748] +[QMContactListCache setupDBWithStoreNamed:applicationGroupIdentifier:]: unrecognized selector sent to class 0x10fb20d90
2017-05-08 11:28:21.007 TestChat[1585:38748] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[QMContactListCache setupDBWithStoreNamed:applicationGroupIdentifier:]: unrecognized selector sent to class 0x10fb20d90'
*** First throw call stack:
(
0 CoreFoundation 0x0000000115fd734b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x0000000115a3f21e objc_exception_throw + 48
2 CoreFoundation 0x0000000116046e74 +[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x0000000115f5cc15 forwarding + 1013
4 CoreFoundation 0x0000000115f5c798 _CF_forwarding_prep_0 + 120
5 TestChat 0x000000010f06144e -[QMCore init] + 174
6 TestChat 0x000000010f061362 __18+[QMCore instance]_block_invoke + 50
7 libdispatch.dylib 0x0000000116aa20cd _dispatch_client_callout + 8
8 libdispatch.dylib 0x0000000116a871fc dispatch_once_f + 501
9 TestChat 0x000000010f061308 +[QMCore instance] + 136
10 TestChat 0x000000010eff595c -[QMLogInViewController done:] + 1452
11 UIKit 0x0000000112fcd5b8 -[UIApplication sendAction:to:from:forEvent:] + 83
12 UIKit 0x000000011340e405 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 149
13 UIKit 0x0000000112fcd5b8 -[UIApplication sendAction:to:from:forEvent:] + 83
14 UIKit 0x0000000113152edd -[UIControl sendAction:to:forEvent:] + 67
15 UIKit 0x00000001131531f6 -[UIControl _sendActionsForEvents:withEvent:] + 444
16 UIKit 0x0000000113153380 -[UIControl _sendActionsForEvents:withEvent:] + 838
17 UIKit 0x00000001131520f2 -[UIControl touchesEnded:withEvent:] + 668
18 UIKit 0x000000011303ace1 -[UIWindow _sendTouchesForEvent:] + 2747
19 UIKit 0x000000011303c3cf -[UIWindow sendEvent:] + 4011
20 UIKit 0x0000000112fe963f -[UIApplication sendEvent:] + 371
21 UIKit 0x00000001137db71d __dispatchPreprocessedEventFromEventQueue + 3248
22 UIKit 0x00000001137d43c7 __handleEventQueue + 4879
23 CoreFoundation 0x0000000115f7c311 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17
24 CoreFoundation 0x0000000115f6159c __CFRunLoopDoSources0 + 556
25 CoreFoundation 0x0000000115f60a86 __CFRunLoopRun + 918
26 CoreFoundation 0x0000000115f60494 CFRunLoopRunSpecific + 420
27 GraphicsServices 0x00000001181f5a6f GSEventRunModal + 161
28 UIKit 0x0000000112fcb964 UIApplicationMain + 159
29 TestChat 0x000000010eff1e3f main + 111
30 libdyld.dylib 0x0000000116aee68d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

Pod file QMCVDevelopment not installing

Pod file QMCVDevelopment not installing

SSH file created and uploaded in github

When i try ssh -T [email protected]

Hi Kuriakose3! You've successfully authenticated, but GitHub does not provide shell access.
Macintosh:.ssh kuriakosepious$ ssh -T [email protected]

When installing podfile,

Pre-downloading: `QMCVDevelopment` from `git.github.com:QuickBlox/QMChatViewController-ios.git`, branch `development`

[!] Error installing QMCVDevelopment
[!] /usr/local/bin/git clone git.github.com:QuickBlox/QMChatViewController-ios.git /var/folders/1j/dds4dz3d4p1fvw2xbfdj4kh00000gq/T/d20160822-11280-1h0j2lw --template= --single-branch --depth 1 --branch development

Cloning into '/var/folders/1j/dds4dz3d4p1fvw2xbfdj4kh00000gq/T/d20160822-11280-1h0j2lw'...
ssh: connect to host git.github.com port 22: Operation timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Problem adding contacts

Wanted to try the platform and the app, registered by phone on one iOS device, by FaceBook on another, and by e-mail from web app.

Now absolutely unclear how to add the contacts to each other instance.

Logout throwing uncaught exception of type NSException

I downloaded the ios app and replaced the app credentials as instructed in https://quickblox.com/developers/Q-municate#Q-municate_iOS

The following exception thrown whenever Logout is clicked:
libc++abi.dylib: terminating with uncaught exception of type NSException

And the following line under the function main() in q-municate-ios-master/Q-municate/Supporting Files/main.m gets highlighted:
return UIApplicationMain(argc, argv, nil, NSStringFromClass([QMAppDelegate class]));

Anyone else is facing the similar issue?

p/s I also noticed that the above error happens when we click on Settings -> Profile Image -> Take Image

Error in QMChatCacheModel bundle

ERROR ITMS-90542: "Invalid CFBundleSupportedPlatforms value. The key 'CFBundleSupportedPlatforms' in the Info.plist file in bundle 'Payload/HeartKeeper.app/QMChatCacheModel.bundle' contains an invalid value '[iPhoneSimulator]'. Consider removing the CFBundleSupportedPlatforms key from the Info.plist. If this bundle is part of a third-party framework, consider contacting the developer of the framework for an update to address this issue."

Digits localization not loading

Hi
After localizing and testing login with phone Digits not loading the localization language it show in English only, tested on simulator and iPhone 4 , 4s

screen shot 22 sep 2017 9 49 15 am

Thanks

Reject Binary for using UIBackgroundModes audio.

Guideline 2.5.4 - Performance - Software Requirements

Your app declares support for audio in the UIBackgroundModes key in your Info.plist but did not include features that require persistent audio.

The audio key is intended for use by apps that provide audible content to the user while in the background, such as music player or streaming audio apps. Please revise your app to provide audible content to the user while the app is in the background or remove the "audio" setting from the UIBackgroundModes key.

Next Steps

The audio key is intended for use by apps that provide audible content to the user while in the background, such as music player or streaming audio apps. Please revise your app to provide audible content to the user while the app is in the background or remove the "audio" setting from the UIBackgroundModes key.

We have just change the first screen where we have use our own two-step verification system using Sinch SDK. And second change is in Contact Screen. We display users to each other depend on phone number saving in their iPhone Contact.
We have faced this reject many time. We first make our own application from scratch we get the same rejection reason and then we decide to use Q-Municate as it is apple approved application but after making above mentioned changes in your app and then submit we face that same previous issue on UIBackgroundModes for audio.

How to localize strings inside pods folder ?

Hi
How can I localize strings inside pods folder like following image inside :

q-municate-ios-master/Pods/QMCVDevelopment/QMChatViewController/Views/Cells/QMChatContactRequestCell/QMChatContactRequestCell.xib

simulator screen shot - iphone 8 plus - 2017-10-18 at 16

Thanks a lot

Localization Auth.storyboard

Hi
I got 2 Errors when I Localization Auth.storyboard
IB Designables Group
1- /Scenes/Auth/Base.lproj/Auth.storyboard: error: IB Designables: Failed to render and update auto layout status for QMWelcomeScreenViewController (ncs-B4-uAJ): Failed to load designables from path (null)

2- /Scenes/Auth/Base.lproj/Auth.storyboard: error: IB Designables: Failed to update auto layout status: Failed to load designables from path (null)

Thanks for your support

Regards
Allan

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.