https://github.com/siprix/flutterplugin
Muti-Call, Multi-Account, Multi-Platform SIP VoIP Client plugin for embedding voice and video communication into Flutter applications.
https://github.com/siprix/flutterplugin
android-app audio-call cross-platform flutter-app flutter-package flutter-plugin ios-app linux-app sip-client video-call voip-client windows-app
Last synced: about 1 month ago
JSON representation
Muti-Call, Multi-Account, Multi-Platform SIP VoIP Client plugin for embedding voice and video communication into Flutter applications.
- Host: GitHub
- URL: https://github.com/siprix/flutterplugin
- Owner: siprix
- License: mit
- Created: 2024-09-18T12:29:10.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-10-23T17:23:24.000Z (7 months ago)
- Last Synced: 2024-10-25T00:57:55.960Z (7 months ago)
- Topics: android-app, audio-call, cross-platform, flutter-app, flutter-package, flutter-plugin, ios-app, linux-app, sip-client, video-call, voip-client, windows-app
- Language: C++
- Homepage: https://www.siprix-voip.com/
- Size: 177 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# siprix_voip_sdk
Siprix VoIP SDK plugin for embedding voice and video communication (based on SIP/RTP protocols) into Flutter applications.
It contains native SIP client implementations for 5 platforms: Android, iOS, MacOS, Windows, and single unified API for all them.Example application contains ready to use SIP VoIP Client. It has ability to:
- Add multiple SIP accounts
- Send/receive multiple calls (Audio and Video)
- Manage calls with (hold, mute microphone/camera, play sound to call from file, send/receive DTMF,...)
Application's UI may not contain all the features, avialable in the SDK, they can be added later or manually in scope of the own application.## Usage
### Prepare models
```dart
void main() async {
AccountsModel accountsModel = AccountsModel();
CallsModel callsModel = CallsModel(accountsModel);
runApp(
MultiProvider(providers:[
ChangeNotifierProvider(create: (context) => accountsModel),
ChangeNotifierProvider(create: (context) => callsModel),
],
child: const MyApp(),
));
}
```
### Init SDK
```dart
class _MyAppState extends State {
@override
void initState() {
super.initState();
_initializeSiprix();
}void _initializeSiprix([LogsModel? logsModel]) async {
InitData iniData = InitData();
iniData.license = "...license-credentials...";
iniData.logLevelFile = LogLevel.info;
SiprixVoipSdk().initialize(iniData, logsModel);
}
```### Build UI, add accounts/calls
```dart
Widget buildBody() {
final accounts = context.watch();
final calls = context.watch();
return Column(children: [
ListView.separated(shrinkWrap: true,
itemCount: accounts.length,
separatorBuilder: (BuildContext context, int index) => const Divider(height: 1),
itemBuilder: (BuildContext context, int index) {
AccountModel acc = accounts[index];
return
ListTile(title: Text(acc.uri, style: Theme.of(context).textTheme.titleSmall),
subtitle: Text(acc.regText),
tileColor: Colors.blue
);
},
),
ElevatedButton(onPressed: _addAccount, child: const Icon(Icons.add_card)),
ElevatedButton(onPressed: _addCall, child: const Icon(Icons.add_call)),
...
}void _addAccount() {
AccountModel account = AccountModel();
account.sipServer = "192.168.0.122";
account.sipExtension = "1016";
account.sipPassword = "12345";
account.expireTime = 300;
context.read().addAccount(account)
.catchError(showSnackBar);
}void _addCall() {
final accounts = context.read();
if(accounts.selAccountId==null) return;CallDestination dest = CallDestination("1012", accounts.selAccountId!, false);
context.read().invite(dest)
.catchError(showSnackBar);
}
```[More detailed integration guide](https://docs.siprix-voip.com/rst/flutter.html#integration-into-flutter-application)
## Limitations
Siprix doesn't provide VoIP services, but in the same time doesn't have backend limitations and can connect to any SIP (Server) PBX or make direct calls between clients.
For testing app you need an account(s) credentials from a SIP service provider(s).
Some features may be not supported by all SIP providers.Attached Siprix SDK works in trial mode and has limited call duration - it drops call after 60sec.
Upgrading to a paid license removes this restriction, enabling calls of any length.Please contact [[email protected]](mailto:[email protected]) for more details.
## More resources
Product web site: [siprix-voip.com](https://siprix-voip.com)
Manual: [docs.siprix-voip.com](https://docs.siprix-voip.com)
## Screenshots