[{"data":1,"prerenderedAt":329},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fv1\u002Fnativephp\u002Foverview":121,"\u002Fdocs\u002Fv1\u002Fnativephp\u002Foverview-surround":324},[4],{"title":5,"path":6,"stem":7,"children":8,"page":44},"Docs","\u002Fdocs","docs",[9],{"title":10,"path":11,"stem":12,"children":13,"page":44},"V1","\u002Fdocs\u002Fv1","docs\u002Fv1",[14,18,22,45,58,80,93,111],{"title":15,"path":16,"stem":17},"Introduction","\u002Fdocs\u002Fv1\u002Fintroduction","docs\u002Fv1\u002F0.introduction",{"title":19,"path":20,"stem":21},"How It Works","\u002Fdocs\u002Fv1\u002Fhow-it-works","docs\u002Fv1\u002F1.how-it-works",{"title":23,"icon":24,"path":25,"stem":26,"children":27,"page":44},"Client","i-lucide-laptop","\u002Fdocs\u002Fv1\u002Fclient","docs\u002Fv1\u002F2.client",[28,32,36,40],{"title":29,"path":30,"stem":31},"Client Setup","\u002Fdocs\u002Fv1\u002Fclient\u002Fsetup","docs\u002Fv1\u002F2.client\u002F1.setup",{"title":33,"path":34,"stem":35},"Syncing","\u002Fdocs\u002Fv1\u002Fclient\u002Fsyncing","docs\u002Fv1\u002F2.client\u002F2.syncing",{"title":37,"path":38,"stem":39},"Events","\u002Fdocs\u002Fv1\u002Fclient\u002Fevents","docs\u002Fv1\u002F2.client\u002F3.events",{"title":41,"path":42,"stem":43},"Configuration","\u002Fdocs\u002Fv1\u002Fclient\u002Fconfiguration","docs\u002Fv1\u002F2.client\u002F4.configuration",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"Server","i-lucide-server","\u002Fdocs\u002Fv1\u002Fserver","docs\u002Fv1\u002F3.server",[51,55],{"title":52,"path":53,"stem":54},"Server Setup","\u002Fdocs\u002Fv1\u002Fserver\u002Fsetup","docs\u002Fv1\u002F3.server\u002F1.setup",{"title":41,"path":56,"stem":57},"\u002Fdocs\u002Fv1\u002Fserver\u002Fconfiguration","docs\u002Fv1\u002F3.server\u002F2.configuration",{"title":59,"icon":60,"badge":61,"path":62,"stem":63,"children":64,"page":44},"NativePHP","i-lucide-smartphone","Commercial","\u002Fdocs\u002Fv1\u002Fnativephp","docs\u002Fv1\u002F4.nativephp",[65,69,73,76],{"title":66,"path":67,"stem":68},"Overview","\u002Fdocs\u002Fv1\u002Fnativephp\u002Foverview","docs\u002Fv1\u002F4.nativephp\u002F1.overview",{"title":70,"path":71,"stem":72},"Setup","\u002Fdocs\u002Fv1\u002Fnativephp\u002Fsetup","docs\u002Fv1\u002F4.nativephp\u002F2.setup",{"title":41,"path":74,"stem":75},"\u002Fdocs\u002Fv1\u002Fnativephp\u002Fconfiguration","docs\u002Fv1\u002F4.nativephp\u002F3.configuration",{"title":77,"path":78,"stem":79},"Lifecycle & Events","\u002Fdocs\u002Fv1\u002Fnativephp\u002Flifecycle","docs\u002Fv1\u002F4.nativephp\u002F4.lifecycle",{"title":81,"icon":82,"badge":61,"path":83,"stem":84,"children":85,"page":44},"Server Pro","i-lucide-bar-chart-2","\u002Fdocs\u002Fv1\u002Fserver-pro","docs\u002Fv1\u002F5.server-pro",[86,89],{"title":66,"path":87,"stem":88},"\u002Fdocs\u002Fv1\u002Fserver-pro\u002Foverview","docs\u002Fv1\u002F5.server-pro\u002F1.overview",{"title":90,"path":91,"stem":92},"Features","\u002Fdocs\u002Fv1\u002Fserver-pro\u002Ffeatures","docs\u002Fv1\u002F5.server-pro\u002F2.features",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":44},"Advanced","i-lucide-settings-2","\u002Fdocs\u002Fv1\u002Fadvanced","docs\u002Fv1\u002F6.advanced",[99,103,107],{"title":100,"path":101,"stem":102},"Service Container","\u002Fdocs\u002Fv1\u002Fadvanced\u002Fservice-container","docs\u002Fv1\u002F6.advanced\u002F0.service-container",{"title":104,"path":105,"stem":106},"Conflict Resolution","\u002Fdocs\u002Fv1\u002Fadvanced\u002Fconflict-resolution","docs\u002Fv1\u002F6.advanced\u002F1.conflict-resolution",{"title":108,"path":109,"stem":110},"Payload Mapping","\u002Fdocs\u002Fv1\u002Fadvanced\u002Fpayload-mapping","docs\u002Fv1\u002F6.advanced\u002F2.payload-mapping",{"title":112,"icon":113,"path":114,"stem":115,"children":116,"page":44},"Examples","i-lucide-book-open","\u002Fdocs\u002Fv1\u002Fexamples","docs\u002Fv1\u002F7.examples",[117],{"title":118,"path":119,"stem":120},"Task Manager","\u002Fdocs\u002Fv1\u002Fexamples\u002Ftask-manager","docs\u002Fv1\u002F7.examples\u002F1.task-manager",{"id":122,"title":66,"body":123,"description":316,"extension":317,"links":318,"meta":319,"navigation":320,"path":67,"seo":321,"stem":68,"__hash__":323},"docs\u002Fdocs\u002Fv1\u002F4.nativephp\u002F1.overview.md",{"type":124,"value":125,"toc":307},"minimark",[126,143,146,149,154,164,167,172,208,210,214,217,257,260,262,266,285,287,291],[127,128,129,133,134,138,139,142],"p",{},[130,131,132],"code",{},"tether\u002Fnativephp-client"," is a ",[135,136,137],"strong",{},"commercial add-on"," that extends ",[130,140,141],{},"tether\u002Fclient"," with NativePHP mobile offline sync triggers, app lifecycle awareness, connectivity awareness, and optional background scheduling.",[127,144,145],{},"It gives NativePHP apps sensible automatic sync triggers without asking you to wire them by hand.",[147,148],"hr",{},[150,151,153],"h2",{"id":152},"what-it-provides","What it provides",[127,155,156,157,159,160,163],{},"Without ",[130,158,132],{},", you manage sync manually: calling ",[130,161,162],{},"TetherClient::sync()"," from an Artisan command, a scheduled task, or in response to user action. That is enough for many desktop and server-side PHP contexts.",[127,165,166],{},"Mobile apps have a different rhythm. Users may open the app after days offline, connection quality changes often, and background work is limited. Your PHP application should be able to respond to those situations without caring about the platform details behind them.",[127,168,169,171],{},[130,170,132],{}," handles the common mobile sync triggers:",[173,174,175,186,194],"ul",{},[176,177,178,181,182,185],"li",{},[135,179,180],{},"Sync on app resume"," - dispatches ",[130,183,184],{},"PushJob"," when the user opens the app again, with a configurable cooldown.",[176,187,188,181,191,193],{},[135,189,190],{},"Sync on connectivity restored",[130,192,184],{}," once the device is back online.",[176,195,196,199,200,203,204,207],{},[135,197,198],{},"Background sync"," - optionally schedules the full ",[130,201,202],{},"tether:sync"," command through ",[130,205,206],{},"nativephp\u002Fmobile-background-tasks",".",[147,209],{},[150,211,213],{"id":212},"php-events","PHP events",[127,215,216],{},"The package exposes two Laravel events that you can subscribe to if your app needs custom behaviour:",[218,219,220,233],"table",{},[221,222,223],"thead",{},[224,225,226,230],"tr",{},[227,228,229],"th",{},"Event",[227,231,232],{},"When fired",[234,235,236,247],"tbody",{},[224,237,238,244],{},[239,240,241],"td",{},[130,242,243],{},"AppResumed",[239,245,246],{},"App becomes active again",[224,248,249,254],{},[239,250,251],{},[130,252,253],{},"NetworkStatusChanged",[239,255,256],{},"Device network connectivity changes",[127,258,259],{},"The built-in sync listeners are registered automatically. You only need to listen to these events for application-specific behaviour, such as updating an offline indicator or refreshing local UI state.",[147,261],{},[150,263,265],{"id":264},"requirements","Requirements",[173,267,268,273,276,279],{},[176,269,270,272],{},[130,271,141],{}," (installed automatically as a dependency)",[176,274,275],{},"NativePHP Mobile v3+",[176,277,278],{},"PHP 8.3+, Laravel 12 or 13",[176,280,281,282,284],{},"For background sync: ",[130,283,206],{}," (optional)",[147,286],{},[150,288,290],{"id":289},"licensing","Licensing",[127,292,293,295,296,301,302,306],{},[130,294,132],{}," is a commercial package distributed through your Tether account. See the ",[297,298,300],"a",{"href":299},"\u002Fadd-ons","Add-ons"," page for details, or open ",[297,303,305],{"href":304},"\u002Fapp\u002Faccount","My account"," to manage access and Composer credentials.",{"title":308,"searchDepth":309,"depth":310,"links":311},"",1,2,[312,313,314,315],{"id":152,"depth":310,"text":153},{"id":212,"depth":310,"text":213},{"id":264,"depth":310,"text":265},{"id":289,"depth":310,"text":290},"See how tether\u002Fnativephp-client adds automatic offline sync triggers for NativePHP mobile apps on app resume, network restore, and background tasks.","md",null,{"badge":61},true,{"title":322,"description":316},"NativePHP Offline Sync - Laravel Tether Add-on","toHzxUWtLqsFT-HOw2iIuaF3tBk2vIwyWDostiINGTs",[325,327],{"title":41,"path":56,"stem":57,"description":326,"children":-1},"Configure tether\u002Fserver routes, middleware, sync keys, registered models, mutation storage, duplicate handling, and Laravel sync endpoint behaviour.",{"title":70,"path":71,"stem":72,"description":328,"children":-1},"Install tether\u002Fnativephp-client, register the NativePHP mobile plugin, configure Composer access, and enable automatic sync in a NativePHP app.",1780481012712]