iOS send sms in background or call phone without dialog clicking - ios

I was asked to create functionality to iOS app which will sent SMS or dial number if worker doesn't push button after some time period in app. App work completely without internet connection (in deep forest, badly covered area without internet connection or something like this). But I was searching possibilities whole day but nothing.
So, is there some solution how to do this or it is impossible?

In short IMPOSSIBLE in IOS; without voip (mean no internet).
IOS does not allow to override default Dial UI methods. or any changes.
So these functionalities cannot be implemented.
You can use your separate application, but VOIP for calling and some api for messaging.

Related

How to implement callkit with connectycube on cordova ios application

Dear Connectycube Team,
I hope this email finds you well.
Our company has integrated Connectycube into our application, which primarily relies on video calling for communication between users and service providers. To ensure a seamless user experience, it's imperative that the video calling system is robust and reliable.
Unfortunately, our development team is facing challenges in making the system highly robust and 100% reliable. The issue lies in the connection dropping when the application is killed or the phone is locked.
issue: We are trying to integrate connecticube onto cordova app. We are using callkit to implement native incoming screen. The issue is that whenever the app is killed or the phone's screen is locked, accepting the call on callkit leads to failure since the accept call function gets called before the connecticube oncall event listener is called.
I would like to request a call with your technical team to discuss this matter and receive any insights or recommendations that could improve the video calling system.
Thank you for your assistance.
Best regards,
Kanhu
Once we receive incoming call using callkit and the user accepts the call, we try to send the accept call command to connectycube. But since the oncall event is not fired immediately, we create a callback loop to wait for the oncall event to get fired. This works sometimes but fails most of the time. Is there any other way ro achieve the accept call functionalities using callkit and connectycube on cordova.

In Backgrond WebRTC offer is not working in iOS

In WebRTC i m giving offer when the app is open and working fine and when it goes to background or Phone is unlock offer is not going.How offer can be sent.Can any one help me.
You have several ways to implement this
1) declare your application as VOIP. This kind of application is allowed to have one signalling socket working even in background mode; you should use setKeepAliveTimeout:handler: method as well in order to keep your socket connection active. As soon as new data will be ready for reading on this socket your application will be awaken and you can send local notification to let user know about incoming call. But this approach is deprecated and isn't battery friendly.
2) Simple way is you can just make use of voip push notifications.

Sending notifications to Bluetooth devices (such as Fitbit)

The device in question (Fitbit Surge) currently has no public BLE API exposed, so there is no documented way of interacting with it.
It does however support displaying some mobile device notifications (only incoming calls and text messages AFAIK). My guess is that in case of iOS it uses ANCS.
I'm interested in making the wristband vibrate programmatically from an iOS application. I figured that maybe dispatching system notifications is the way to go.
I saw that for Android there is bitTicker which basically acts as a proxy so that e.g. WhatsApp notifications get passed to Fitbit as text message notifications.
I was wondering if the same is actually possible on iOS as well. I'm considering both private and public iOS API solutions (not planning to release this application to App Store). Is there a way of somehow synthesising incoming call / message notifications so that they are passed to Fitbit? Is there some other way of approaching this problem?
I would appreciate any insights in this matter.

Creating incoming call overlay in iOS

I have already done this in Android, but I need to know if or how to do it in iOS. Having a somewhat definitive "no its not possible" will help me convince the powers that be.
The app I have is a VOIP app, although at this point all the incoming call handling is done via simple notifications. I know that if our app were in use (its more unified communications than simply voice so it may be active while not on a call) I could do this easily... its my app.
Its when the app is not in the foreground that I'm running stuck.
All the "how to do VOIP" examples use the voip socket to simply add a notification. While the APN notifications aren't terribly speedy, without the immediate feedback of a ringer, I can't justify putting in all the additional code (since we're not using SIP I'll have to write the socket layer myself in order to get the notifications slightly sooner).
Is it as simple as opening a custom URL which will launch my app and show the ringer ([[UIApplication sharedApplication] openURL:[NSURL URLWithString:#"myapp://example.com/ringer/call-12321123"]];)
? That would seem to not allow me to return the user to the app they were using before the ringing started.

Chat app synchronization on background in IOS

I have a chat application developed by JS. I want to send PING to server once in a while. Its not a problem if app runs on fore ground. The problem is when user minimizes it or open another app. My app looses its focus and gets into suspended state.
I have following two use-cases.
To keep the chat session open I need to send PING to server (Its an IRC server) every X minutes even the app runs in background.
We also need to check for new messages (by ajax on a local http server) and add a local notification to the notification queue so when user clicks on it app can resume
I have found apple does not allow running apps in the background. if they allow they require special permission. I found some apps does it by requesting finite length execution time.
What is the best way to get highest possible background execution time? As a chat app can I request permission for voip, location or any other way ?
Note: the app will be running in an environment where there is no Internet. Hence push notification will not work here.
Update: After doing a lot searching I found background fetch. It seem background fetch will suite it. But still the problem remains, its not called in a timely manner.
This sounds like an interesting problem. From reading the various comments, it sounds like you want this to work when you're on a local network - so you have wifi, but the wifi router/base station isn't connected to the actual internet?
Because background refresh isn't going to be predictable - you'll never know when it is going to update - you might want to get creative.
You could look into exploiting iOS VOIP support, only without the Voice! Apple has some tips on VOIP here. VOIP basically uses something called SIP (Session Initiation Protocol), which is signalling layer of the call, and a lot like HTTP. It's this SIP layer that you want to take advantage of.
This isn't going to be terribly easy, but it should be achievable. Setup your app to use VOIP, and then look into something like PJSip as your SIP library. Then, on your local network have a SIP Server (I'm sure there are plenty open source implementations) that you can register your iPhone against (so your server knows where your phone is, pretending to be a VOIP phone). This should work, because it doesn't need to go through Apple as far as I am aware... And will run happily on your local network.
Then, the server can send a message via SIP to the handset, as if it were instigating a VOIP session. You app is awoken, gets the messages - ideally from the SIP message if possible - and then just doesn't start the session. SIP was designed just for creating sessions, not just VOIP. When I worked in Telecoms R&D (a long time ago) we were using it to swap between Text/Voice/Video, all using local servers.
You'll have to jump a lot of hoops to make this work, but it would be pretty awesome. I have never tried this actual use case - especially with iOS, but I'm fairly sure it will work. It is a bit of a fudge, but should get you where you need to go.
Good luck!
You can use something like PubNub to build this chat app with iOS using native Objective-C code, or with the Phonegap (Cordova) libs.
The beauty with using a real-time messaging network like PubNub is that when the app goes to the background, you can easily have the chat messages come in on APNS.
When the app is in the foreground, it can just receive them as the native (PubNub) message. And if it needs to "catch-up" with the messages it missed while in the background (but received via APNS), its trivial to implement.
Also, PubNub is platform agnostic -- so you can easily also use it on Web, Android, BB, Windows Phone, etc.
http://www.pubnub.com/blog/build-real-time-chat-10-lines-code/
http://www.pubnub.com/blog/html5-websockets-beautiful-real-time-chat-on-mobile-using-pubnubs-channel-presence/
https://github.com/pubnub/objective-c/tree/master/iOS
https://github.com/pubnub/javascript/tree/master/phonegap
geremy

Resources