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>
24 lines
1.0 KiB
Ruby
24 lines
1.0 KiB
Ruby
require 'json'
|
|
|
|
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
|
|
|
|
Pod::Spec.new do |s|
|
|
# NOTE: the pod name MUST be 'NativeCall' (PascalCase of the npm package name 'native-call').
|
|
# Capacitor's `cap sync` writes `pod 'NativeCall', :path => '../../plugins/native-call'` into the
|
|
# generated Podfile, and CocoaPods then looks for a file literally named NativeCall.podspec whose
|
|
# s.name is 'NativeCall'. Any other name → "No podspec found for `NativeCall`" and pod install fails.
|
|
s.name = 'NativeCall'
|
|
s.version = package['version']
|
|
s.summary = package['description']
|
|
s.license = package['license']
|
|
s.homepage = 'https://bizgaze.com'
|
|
s.author = 'BizGaze'
|
|
s.source = { :git => 'https://bizgaze.com/native-call.git', :tag => s.version.to_s }
|
|
s.source_files = 'ios/Sources/**/*.{swift,h,m}'
|
|
s.ios.deployment_target = '14.0'
|
|
s.dependency 'Capacitor'
|
|
# CallKit + PushKit + AVFoundation are system frameworks (no external pod).
|
|
s.frameworks = 'CallKit', 'PushKit', 'AVFoundation'
|
|
s.swift_version = '5.1'
|
|
end
|