In my application, I am using Sinch API for audio and Video call functionality. it's working fine.
But I want to implement UI for the Incoming audio call is like normal phone call UI (like WhatsApp audio call) when the application is not in foreground state (application is in "Background/Inactive/Terminated").
So I want's to know, is Sinch API support CallKit framework or not? if Not then is there any other way to implement this functionality with Sinch API?
Yes Sinch support CallKit. I used it in my iOS app. link for news
for run application in Background/Inactive/Terminated state first you must upload APNS certificates, one for each type - Development, Production & VoIP Services of your app to Sinch server.
Related
I have set up the latest linphone iOS code (version 3.16.6) and I am able to make audio and video calls but if my app is in background or killed, not getting calls.
Please guide me in details that what I have to do to get the calls even when app is in background or killed.
Please let me know if there is server interaction part also there.
You have to wake up your application with voip-notification, before receiving call on background.
So you can implement your solution which send notification before every call. Notification wake an app and app receive the call
You can use callkit for UI, but callkit itself doesn't handle any background or voip work.
Use some working solution for example FlexiSip from Belledonne
http://www.linphone.org/technical-corner/flexisip/overview
FlexiSip have builtin support for iOS push notification, but you will need to generate certificates and do some server work :)
EDIT
Voip notification process.
Before every SIP Invite you have send voip notification to target device. Voip notification wake application which will be ready for accepting SIP call.
I'm not sure if you use proxy or if you making just direct calls. If you are using proxy you can try FlexiSIP which should handle this logic for you (I didn't tried). Of course you will need to provide your voip certificates to it.
If you making direct calls without SIP proxy, source application should call same API of some web service which send voip notification for target device (For example Houston API). And after you can send SIP invite from source to target application.
Recently I've started making a client VoIP app from scratch in swift. I have Asterisk server and i want to receive incoming calls (doesn't need to handle outgoing calls) from Asterisk (not from iOS users). How can I implement handling VoIP calls and signalisation (register, reject call) using native tools? If it's impossible to register to a VoIP account with CallKit and PushKit - what would be the best open source solution? I've never made an app for iOS and don't know all capabilites of CallKit and PushKit yet.
CallKit is for front-end functionality of calling apps. It will not help you with connecting a client to your server. If you have never made an iOS app before then making a VOIP app is probably not the best place to start. You will almost certainly have to make your client from scratch unless Asterisk has a library for iOS.
I am working on a video/audio call app. Now when my phone is locked and another user is calling me then from the lock screen I will get a notification and if I swipe the notification then the call automatically received. I used UILocalNotification for getting notification.
But I don't want like this. I want to see the UI same as when another user call me when my phone is unlocked that is there will be receive/reject option with my UI. I want to receive call like Viber or skype. How can I do that?
You should be looking into the PushKit framework form Apple.
The PushKit framework provides the classes for your iOS apps to
receive VoIP pushes from remote servers. VoIP pushes provide the
functionality that VoIP apps need to perform on-demand processing of
the push before displaying a notification to the user.
Apple Documentation
There are some tutorials might help you.
Tutorial 1
Tutorial 2
Update
To display the system-calling UI for your app's VoIP services you can use CallKit.
CallKit documentation
Sample code from Apple
Here is a tutorial which explains it well.
http://www.techjini.com/blog/enhance-voip-app-user-experience-using-pushkit-callkit/
https://www.raywenderlich.com/150015/callkit-tutorial-ios
Can we integrate VoIP services through the new framework CallKit without using any server services or push notification?
I am really new to this concept, also checked the speaker box app as a sample app but didn't get much idea how it would be working.
Please, share your feedback if anyone has integrated CallKit.
Thanks
The CallKit framework provides programmatic access to VoIP functionality, as well as call blocking and identification. Apps can use CallKit to receive incoming calls and make outgoing calls using the native phone UI.
Reference for call kit.
Can we integrate VoIP services through new framework call kit without using any server services or push notification?
No we can't use it. You will need third parties like Twilio, Plivo, or ICELink and create your own server. Then provide CallKit the data required, it will handle the call and UI stuff. You can read the apple docs for more ideas.
If a CallKit app only intends to make outgoing calls, then it may be possible to not have a server component. But if the app intends to receive incoming calls while the app may not be running (e.g. when it is suspended), those incoming calls must be signaled via Push Notification, and those push notifications are typically sent by a backing server.
I've integrated the quickblox framework into my iOS project.
I've added the VoIP capability on background mode of plist file.
But I can't get incoming call when app is in background.
Any idea for this issue ?
QuickBlox officially recommend to use Audio, AirPlay and Picture in Picture background mode enabled in their official documentation
Here is the link for quickblox-ios webrtc implementation.
In my experience you can stream only audio when your app is in background, and if app is not in active state you would have to send push notification to your user to accept call.