Map<String, dynamic> toJson() { return { 'aps': (aps?.toJson()?..removeWhere((k,v)=>v == null)) ?? {}, ...?customData, // Merges custom data if available }; }