feat(device-utils): iOS cold-start local notification deep-link support (OK-55681)#61
feat(device-utils): iOS cold-start local notification deep-link support (OK-55681)#61huhuanming wants to merge 7 commits into
Conversation
… cold-start deep-link (OK-55681) LaunchOptionsStore gains an in-memory coldStartLocalNotification slot (JSON userInfo of a tapped LOCAL notification) plus a read-once takeColdStartLocalNotification(). The new Nitro method getAndClearColdStartLocalNotification() returns it and clears it; the host AppDelegate writes the slot via KVC on a killed-app notification tap. In-memory only (no NSUserDefaults): a new process = fresh nil, so it is launch-scoped and cannot replay a stale tap. Android returns "" (taps arrive via Intent extras there). Run yarn nitrogen + yarn prepare before publishing 3.0.54.
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
- iOS/Android: warm-boot the shared offline page + route page->native callbacks to owner ?? warmDriver so bars-state/load-end aren't dropped while the host that owns the WebView is the offscreen prewarm - source/bridge setters apply synchronously (drop scheduleReconcile, which caused an infinite reconcile loop on Android) - add ChartWV diagnostics via OneKeyLog (depend on ReactNativeNativeLogger) - fix Android compileReleaseKotlin: dispose() needs override
…retries - Android: pause the pooled WebView's renderer (onPause) when no host owns it and resume on claim — Android (unlike iOS WKWebView) never throttles an offscreen WebView, so the warm page burned a CPU core + grew RAM to OOM after leaving the chart. Per-instance onPause (NOT process-global pauseTimers). - attachToContainer: retry reparent up to 12 frames instead of giving up after 1 (a single retry stranded the WebView in the old container -> blank chart slot) - webviewDebuggingEnabled Nitro prop (iOS isInspectable / Android setWebContentsDebuggingEnabled) following the dev-mode toggle (Agent B)
…roid re-entry white-screen/stuck-loading) Pooled WebView re-parented across hosts left a stale parent on dispose, so re-entering a chart showed a white screen / infinite loading (issues 1 & 2). - forceDetach(): endViewTransition + removeView, fallback removeViewInLayout + requestLayout, so the parent is cleared synchronously even on a dead container. - detachFrom(): parent-checked, used by ChartWebview.dispose() for pooled hosts. - attachToContainer(): uses forceDetach, retries via container.post. Retains ChartDBG diagnostic counters (warmDriver/owner setters, throttled per-3s msgIn/native->page RATE, pauseIfIdle SKIP/PAUSE/RESUME) for ongoing on-device verification; to be removed before merge.
…ve logs Remove the ChartDBG diagnostic layer added for the Android root-cause work: - DBG tag, owner/warmDriver transition logs, dbgId getter - throttled msgIn/native->page rate counters + rateLogger handler - pauseIfIdle SKIP verbose log Keep only operational logs under the ChartWebviewPool tag: WebView CREATED/DESTROYED (singleton verification), renderer PAUSE/RESUME, and the attach-failed-after-retries warning. Logging-only change; behavior unchanged.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub. |
Summary
This PR introduces iOS cold-start local notification deep-link support via a new
API in the
module.
Changes
retrieve and clear the cold-start local notification payload on iOS (OK-55681)
Checklist
Please review. 🙏