NativeScript plugin to interact with the native Call UI
APACHE-2.0 License
Sure 😅
But what if your app supports VOIP / WebRTC calls? You'll want to have the operating system pop up the native call dialog, right? That's where this plugin comes in.
Currently iOS only, where we leverage CallKit
, which is part of the iOS SDK since iOS 10.
tns plugin add nativescript-call
Check the source in the demo folder, or run it on your own device:
git clone https://github.com/EddyVerbruggen/nativescript-call
cd nativescript-call/src
npm i
npm run demo.ios
Usage in NativeScript-Angular and NativeScript-Vue is nothing different from what you'd do in NativeScript-Core.
receiveCall
The properties you can pass to this method are:
Property | Type | Description |
---|---|---|
appName | string |
The app's name, as shown on the caller screen. Default the name of your app. |
icon | string |
The name of an icon to show for your app. Loaded from the App_Resources folder (see the demo). |
handleType | TNSCallHandleType |
Either "PHONE" (default) or "EMAIL" . |
handleId | string |
Either a phone number when handleType is "PHONE" , or an email address when handleType is "EMAIL" . |
callerName | string |
The name to be displayed on the call UI. |
hasVideo | boolean |
Whether or not this call supports video. Default false . |
supportsDTMF | boolean |
Whether the call can send DTMF (dual tone multifrequency) tones via hard pause digits or in-call keypad entries. Default false . |
The event handlers you can pass to this method are:
| Name | Description | | --- | --- | --- | | onSpeakerOn | Triggered when the speaker is turned on. | | onSpeakerOff | Triggered when the speaker is turned off. |
import { TNSCall } from "nativescript-call";
const tnsCall = new TNSCall();
tnsCall.receiveCall(
{
appName: "My App",
icon: "download-from-cloud", // see demo/app/App_Resources/iOS
handleType: "PHONE",
handleId: "+31612345678",
callerName: "Donald J. Drumpf",
hasVideo: true,
supportsDTMF: true,
onSpeakerOn: () => console.log("Speaker ON"),
onSpeakerOff: () => console.log("Speaker OFF")
})
.then(() => console.log("Receive call success"))
.catch(err => console.log("Error receiving call: " + err));
endCall
import { TNSCall } from "nativescript-call";
const tnsCall = new TNSCall();
tnsCall.endCall()
.then(() => console.log("Ended call"))
.catch(err => console.log("Error ending call: " + err));
Either use Pusher, or this CURL command:
curl -v -d '{"userInfo":"eddy.verbruggen","aps":{"sound":"default"},"title":"Eddy Verbruggen","callType":"VIDEO"}' --header "apns-topic: com.app.sample" --http2 --cert ~/Desktop/voip/ck.pem:ggk12 https://api.development.push.apple.com/3/device/DEVICE_VOIP_TOKEN