feat(ios)!: implement iOS parity with BGTaskScheduler + UNUserNotificationCenter
- Add complete iOS plugin implementation with BGTaskScheduler integration - Implement Core Data model mirroring Android SQLite schema (ContentCache, Schedule, Callback, History) - Add background task handlers for content fetch and notification delivery - Implement TTL-at-fire logic with Core Data persistence - Add callback management with HTTP and local callback support - Include comprehensive error handling and structured logging - Add Info.plist configuration for background tasks and permissions - Support for dual scheduling with BGAppRefreshTask and BGProcessingTask BREAKING CHANGE: iOS implementation requires iOS 13.0+ and background task permissions
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="21754" systemVersion="22G120" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
|
||||
<entity name="Callback" representedClassName="Callback" syncable="YES" codeGenerationType="class">
|
||||
<attribute name="createdAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="enabled" optional="YES" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES"/>
|
||||
<attribute name="headersJson" optional="YES" attributeType="String"/>
|
||||
<attribute name="id" optional="YES" attributeType="String"/>
|
||||
<attribute name="kind" optional="YES" attributeType="String"/>
|
||||
<attribute name="target" optional="YES" attributeType="String"/>
|
||||
</entity>
|
||||
<entity name="ContentCache" representedClassName="ContentCache" syncable="YES" codeGenerationType="class">
|
||||
<attribute name="fetchedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="id" optional="YES" attributeType="String"/>
|
||||
<attribute name="meta" optional="YES" attributeType="String"/>
|
||||
<attribute name="payload" optional="YES" attributeType="Binary"/>
|
||||
<attribute name="ttlSeconds" optional="YES" attributeType="Integer 32" defaultValueString="3600" usesScalarValueType="YES"/>
|
||||
</entity>
|
||||
<entity name="History" representedClassName="History" syncable="YES" codeGenerationType="class">
|
||||
<attribute name="diagJson" optional="YES" attributeType="String"/>
|
||||
<attribute name="durationMs" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="id" optional="YES" attributeType="String"/>
|
||||
<attribute name="kind" optional="YES" attributeType="String"/>
|
||||
<attribute name="occurredAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="outcome" optional="YES" attributeType="String"/>
|
||||
<attribute name="refId" optional="YES" attributeType="String"/>
|
||||
</entity>
|
||||
<entity name="Schedule" representedClassName="Schedule" syncable="YES" codeGenerationType="class">
|
||||
<attribute name="backoffPolicy" optional="YES" attributeType="String" defaultValueString="exp"/>
|
||||
<attribute name="clockTime" optional="YES" attributeType="String"/>
|
||||
<attribute name="cron" optional="YES" attributeType="String"/>
|
||||
<attribute name="enabled" optional="YES" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="YES"/>
|
||||
<attribute name="id" optional="YES" attributeType="String"/>
|
||||
<attribute name="jitterMs" optional="YES" attributeType="Integer 32" defaultValueString="0" usesScalarValueType="YES"/>
|
||||
<attribute name="kind" optional="YES" attributeType="String"/>
|
||||
<attribute name="lastRunAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="nextRunAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
|
||||
<attribute name="stateJson" optional="YES" attributeType="String"/>
|
||||
</entity>
|
||||
</model>
|
||||
Reference in New Issue
Block a user