First slice of Android Phase C (full LiveKit parity), mirroring how iOS started: native full-screen incoming call UI that wakes the app from closed, with call MEDIA still in the WebView (foreground). Native LiveKit media + a foreground service for true background audio are Increment 2. Native (new Android side of the native-call plugin, Java to match the proven official-plugin module layout): - NativeCallPlugin: registered as window.Capacitor.Plugins.NativeCall (same jsName as iOS, so the shared web bridge drives both). getToken (FCM token), reportIncomingCall (ring), reportOutgoingCall, endCall, setMuted; video/screen/hole-punch/transcript methods are safe no-ops until later increments so the shared bridge never rejects. - BzCallMessagingService: extends @capacitor/push-notifications' MessagingService — handles high-priority call-wake DATA messages (data.bzcall==1) to ring when closed, forwards all other push via super. - IncomingCallActivity: full-screen call screen over the lock screen (showWhenLocked/turnScreenOn), Accept/Decline, looping ringtone. - CallStore: incoming-call notification (channel, full-screen-intent, actions) + UUID dedup so the FCM and WebSocket paths don't double-ring. - Plugin manifest: BzCallMessagingService + IncomingCallActivity + call perms (USE_FULL_SCREEN_INTENT/VIBRATE/WAKE_LOCK). - android-patch.js: removes Capacitor's MessagingService in the APP manifest (highest merge priority) so ours is the sole MESSAGING_EVENT receiver; ensures the tools namespace. Idempotent. - package.json: capacitor.android.src wired. Server (dormant until ANDROID_CALLS=1): - push.js sendFcmData: high-priority data-only FCM (rings when closed). sendCallNotification rings 'android' tokens via it; sendCallCancel too. - config.js ANDROID_CALLS flag; /api/meetings/config exposes androidCall. Web (home.html) — platform-aware, iOS/web behavior byte-for-byte unchanged: - setupNativeCall: Android gated on cfg.androidCall, sets _callWebViewMedia (native ring, WebView media); iOS keeps CallKit native-media path. - answerCall + both outgoing sites branch on _callWebViewMedia so Android joins the meeting normally while the callee still rings via the server. Safe to deploy now: dormant until ANDROID_CALLS=1 AND an APK carrying the plugin is installed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
33 lines
642 B
JSON
33 lines
642 B
JSON
{
|
|
"name": "native-call",
|
|
"version": "1.0.0",
|
|
"description": "Native CallKit + PushKit VoIP calling for Biz Connect (iOS)",
|
|
"main": "dist/plugin.cjs.js",
|
|
"module": "dist/esm/index.js",
|
|
"types": "dist/esm/index.d.ts",
|
|
"author": "BizGaze",
|
|
"license": "MIT",
|
|
"files": [
|
|
"dist/",
|
|
"ios/",
|
|
"android/src/main/",
|
|
"android/build.gradle",
|
|
"NativeCall.podspec",
|
|
"Package.swift"
|
|
],
|
|
"capacitor": {
|
|
"ios": {
|
|
"src": "ios"
|
|
},
|
|
"android": {
|
|
"src": "android"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@capacitor/core": "^8.0.0"
|
|
},
|
|
"peerDependencies": {
|
|
"@capacitor/core": "^8.0.0"
|
|
}
|
|
}
|