f63aba0ed1
The native call feature (iOS). Backward-compatible: without the plugin (current builds) nativeCallOn() is false and every CallKit branch is skipped, so web/older builds behave exactly as before. Native (mobile/plugins/native-call, a local Capacitor plugin like audio-route): - PushKit: registers for VoIP pushes, reports the VoIP token to JS (-> /api/v1/devices 'ios-voip'). On an incoming VoIP push, reports a CallKit incoming call (full-screen ring, works when the app is force-killed). - CallKit: answer/decline/end -> events to JS; configures the call AVAudioSession on didActivate so the WebView's WebRTC audio rides a call-priority session (background). - Outgoing calls register with CallKit too (reportOutgoingCall) so they get the same active-call background-audio context. - NativeCall.podspec (frameworks CallKit/PushKit/AVFoundation); added to mobile deps; ios-patch.sh now sets UIBackgroundModes = [audio, voip] (voip required for PushKit). Web bridge (home.html): setupNativeCall() registers the VoIP token, joins on CallKit answer, leaves/declines on CallKit end; on CallKit devices the in-app call-invite popup + WebAudio ring are suppressed (the system rings instead); outgoing calls are reported to CallKit; call-end events dismiss the CallKit call. calls.js threads a stable call uuid through the dm-call/group-call WS events + start responses so both sides can match the CallKit call. Needs a Codemagic build to compile the plugin; first on-device iteration expected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
1.1 KiB
JSON
35 lines
1.1 KiB
JSON
{
|
|
"name": "biz-connect-mobile",
|
|
"version": "0.1.0",
|
|
"description": "Biz Connect mobile app — Capacitor shell loading the Connect web UI",
|
|
"scripts": {
|
|
"sync": "cap sync",
|
|
"assets": "capacitor-assets generate --android",
|
|
"assets:all": "capacitor-assets generate",
|
|
"android": "cap open android",
|
|
"ios": "cap open ios"
|
|
},
|
|
"dependencies": {
|
|
"audio-route": "file:plugins/audio-route",
|
|
"media-library": "file:plugins/media-library",
|
|
"native-call": "file:plugins/native-call",
|
|
"share-inbox": "file:plugins/share-inbox",
|
|
"@capacitor-community/safe-area": "^7.0.0",
|
|
"@capacitor/android": "^7.0.0",
|
|
"@capacitor/app": "^7.0.0",
|
|
"@capacitor/camera": "^7.0.0",
|
|
"@capacitor/core": "^7.0.0",
|
|
"@capacitor/filesystem": "^7.0.0",
|
|
"@capacitor/ios": "^7.0.0",
|
|
"@capacitor/keyboard": "^7.0.0",
|
|
"@capacitor/share": "^7.0.0",
|
|
"@capacitor/push-notifications": "^7.0.0",
|
|
"@capacitor/splash-screen": "^7.0.0",
|
|
"@capacitor/status-bar": "^7.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"@capacitor/assets": "^3.0.5",
|
|
"@capacitor/cli": "^7.0.0"
|
|
}
|
|
}
|