{"id":21966,"date":"2025-11-26T12:14:27","date_gmt":"2025-11-26T12:14:27","guid":{"rendered":"https:\/\/prometteursolutions.com\/blog\/?p=21966"},"modified":"2025-11-26T12:14:59","modified_gmt":"2025-11-26T12:14:59","slug":"integracao-completa-do-codepush-no-react-native","status":"publish","type":"post","link":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/","title":{"rendered":"Integra\u00e7\u00e3o Completa do CodePush no React Native"},"content":{"rendered":"<h2 data-start=\"899\" data-end=\"914\"><strong data-start=\"902\" data-end=\"914\">CodePush<\/strong><\/h2>\n<p data-start=\"916\" data-end=\"1179\">Um aplicativo React Native \u00e9 composto por arquivos JavaScript e por quaisquer imagens associadas. Por\u00e9m, o <em data-start=\"1023\" data-end=\"1038\">metro bundler<\/em> precisa empacotar e distribuir esses arquivos como parte de um bin\u00e1rio espec\u00edfico de cada plataforma \u2014 ou seja, um arquivo <code data-start=\"1162\" data-end=\"1168\">.ipa<\/code> ou <code data-start=\"1172\" data-end=\"1178\">.apk<\/code>.<\/p>\n<p data-start=\"1181\" data-end=\"1471\">Depois que o aplicativo \u00e9 lan\u00e7ado, atualizar o c\u00f3digo JavaScript \u2014 incluindo corre\u00e7\u00f5es de erros, adi\u00e7\u00e3o de novos recursos ou atualiza\u00e7\u00e3o de imagens \u2014 exige recompila\u00e7\u00e3o e redistribui\u00e7\u00e3o de todo o bin\u00e1rio. Isso tamb\u00e9m envolve o tempo de an\u00e1lise das lojas nas quais voc\u00ea publica o aplicativo.<\/p>\n<p data-start=\"1473\" data-end=\"1919\">O plugin CodePush oferece um recurso de backup para recupera\u00e7\u00e3o r\u00e1pida e simples. Ele mant\u00e9m uma c\u00f3pia da atualiza\u00e7\u00e3o anterior, permitindo realizar um rollback autom\u00e1tico caso ocorra alguma falha durante a atualiza\u00e7\u00e3o. Esse recurso tamb\u00e9m beneficia os usu\u00e1rios finais, pois garante que sempre tenham uma vers\u00e3o funcional do app. Al\u00e9m disso, elimina a necessidade de tempo de inatividade, j\u00e1 que \u00e9 poss\u00edvel restaurar rapidamente a vers\u00e3o anterior.<\/p>\n<p data-start=\"1921\" data-end=\"2184\">\u00c9 importante destacar que, quando suas altera\u00e7\u00f5es incluem modifica\u00e7\u00f5es em c\u00f3digos nativos \u2014 como os arquivos <code data-start=\"2030\" data-end=\"2045\">AppDelegate.m<\/code> ou <code data-start=\"2049\" data-end=\"2068\">MainActivity.java<\/code> \u2014 o CodePush n\u00e3o pode ser usado para distribuir a atualiza\u00e7\u00e3o; nesse caso, a publica\u00e7\u00e3o deve ser feita pelas lojas.<\/p>\n<hr data-start=\"2186\" data-end=\"2189\" \/>\n<h2 data-start=\"2191\" data-end=\"2237\"><strong data-start=\"2194\" data-end=\"2237\">App Center Command Line Interface (CLI)<\/strong><\/h2>\n<p data-start=\"2239\" data-end=\"2407\">A Interface de Linha de Comando do App Center (CLI) \u00e9 uma ferramenta unificada para executar servi\u00e7os do App Center diretamente pelo terminal. Instale o comando usando:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">npm install <span class=\"hljs-literal\">-g<\/span> appc<span class=\"hljs-built_in\">enter-cli<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<h3 data-start=\"2447\" data-end=\"2497\"><strong data-start=\"2451\" data-end=\"2497\">Passos para usar o CodePush com App Center<\/strong><\/h3>\n<ol data-start=\"2499\" data-end=\"2702\">\n<li data-start=\"2499\" data-end=\"2530\">\n<p data-start=\"2502\" data-end=\"2530\">Cadastre-se no App Center.<\/p>\n<\/li>\n<li data-start=\"2531\" data-end=\"2553\">\n<p data-start=\"2534\" data-end=\"2553\">Crie seu projeto.<\/p>\n<\/li>\n<li data-start=\"2554\" data-end=\"2637\">\n<p data-start=\"2557\" data-end=\"2637\">Adicione o nome do projeto, tipo de release, sistema operacional e plataforma.<\/p>\n<\/li>\n<li data-start=\"2638\" data-end=\"2702\">\n<p data-start=\"2641\" data-end=\"2702\">Crie uma chave de deployment para produ\u00e7\u00e3o e desenvolvimento.<\/p>\n<\/li>\n<\/ol>\n<p data-start=\"2704\" data-end=\"2736\">Integre o App Center instalando:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">npm install appcenter appc<span class=\"hljs-built_in\">enter-analytics<\/span> appc<span class=\"hljs-built_in\">enter-crashes<\/span> <span class=\"hljs-literal\">--save-exact<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"2820\" data-end=\"2823\" \/>\n<h2 data-start=\"2825\" data-end=\"2852\"><strong data-start=\"2828\" data-end=\"2852\">Android \u2014 Integra\u00e7\u00e3o<\/strong><\/h2>\n<h3 data-start=\"2854\" data-end=\"2894\"><strong data-start=\"2858\" data-end=\"2894\">1. Criar arquivo de configura\u00e7\u00e3o<\/strong><\/h3>\n<p data-start=\"2895\" data-end=\"2937\">Crie o arquivo <code data-start=\"2910\" data-end=\"2933\">appcenter-config.json<\/code> em:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">android\/app\/<span class=\"hljs-attribute\">src<\/span>\/<span class=\"hljs-selector-tag\">main<\/span>\/assets\/<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"2977\" data-end=\"2986\">Conte\u00fado:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-punctuation\">{<\/span> <span class=\"hljs-attr\">\"app_secret\"<\/span><span class=\"hljs-punctuation\">:<\/span> <span class=\"hljs-string\">\"{Seu app secret aqui}\"<\/span> <span class=\"hljs-punctuation\">}<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<h3 data-start=\"3039\" data-end=\"3071\"><strong data-start=\"3043\" data-end=\"3071\">2. Modificar strings.xml<\/strong><\/h3>\n<p data-start=\"3072\" data-end=\"3081\">Adicione:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">&lt;<span class=\"hljs-built_in\">string<\/span> name=<span class=\"hljs-string\">\"appCenterCrashes_whenToSendCrashes\"<\/span> moduleConfig=<span class=\"hljs-string\">\"true\"<\/span> translatable=<span class=\"hljs-string\">\"false\"<\/span>&gt;DO_NOT_ASK_JAVASCRIPT&lt;\/<span class=\"hljs-built_in\">string<\/span>&gt;<br \/>\n&lt;<span class=\"hljs-built_in\">string<\/span> name=<span class=\"hljs-string\">\"appCenterAnalytics_whenToEnableAnalytics\"<\/span> moduleConfig=<span class=\"hljs-string\">\"true\"<\/span> translatable=<span class=\"hljs-string\">\"false\"<\/span>&gt;ALWAYS_SEND&lt;\/<span class=\"hljs-built_in\">string<\/span>&gt;<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"3332\" data-end=\"3382\">Adicione tamb\u00e9m a chave de deployment do CodePush:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">resources<\/span><\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">string<\/span><\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"app_name\"<\/span>&gt;AppName<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">string<\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">string<\/span><\/span> <span class=\"hljs-attr\">moduleConfig<\/span>=<span class=\"hljs-string\">\"true\"<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"CodePushDeploymentKey\"<\/span>&gt;DeploymentKey<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">string<\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">resources<\/span><\/span>&gt;<br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"3545\" data-end=\"3548\" \/>\n<h2 data-start=\"3550\" data-end=\"3573\"><strong data-start=\"3553\" data-end=\"3573\">iOS \u2014 Integra\u00e7\u00e3o<\/strong><\/h2>\n<p data-start=\"3575\" data-end=\"3583\">Execute:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">pod install <span class=\"hljs-attr\">--repo-update<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"3620\" data-end=\"3672\">Abra <code data-start=\"3625\" data-end=\"3640\">AppDelegate.m<\/code> ou <code data-start=\"3644\" data-end=\"3660\">AppDelegate.mm<\/code> e adicione:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-meta\">#import <span class=\"hljs-string\">&lt;AppCenterReactNative.h&gt;<\/span><\/span><br \/>\n<span class=\"hljs-meta\">#import <span class=\"hljs-string\">&lt;AppCenterReactNativeAnalytics.h&gt;<\/span><\/span><br \/>\n<span class=\"hljs-meta\">#import <span class=\"hljs-string\">&lt;AppCenterReactNativeCrashes.h&gt;<\/span><\/span><br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"3798\" data-end=\"3861\">Depois, no m\u00e9todo <code data-start=\"3816\" data-end=\"3860\">application:didFinishLaunchingWithOptions:<\/code>:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-section\">[AppCenterReactNative register]<\/span><span class=\"hljs-comment\">;<\/span><br \/>\n<span class=\"hljs-section\">[AppCenterReactNativeAnalytics registerWithInitiallyEnabled:true]<\/span><span class=\"hljs-comment\">;<\/span><br \/>\n<span class=\"hljs-section\">[AppCenterReactNativeCrashes registerWithAutomaticProcessing]<\/span><span class=\"hljs-comment\">;<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"4035\" data-end=\"4085\">Crie o arquivo <code data-start=\"4050\" data-end=\"4074\">AppCenter-Config.plist<\/code> em <code data-start=\"4078\" data-end=\"4084\">\/ios<\/code>:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-meta\">&lt;?xml version=<span class=\"hljs-string\">\"1.0\"<\/span><\/span> encoding=<span class=\"hljs-string\">\"UTF-8\"<\/span>?&gt;<br \/>\n<span class=\"hljs-meta\">&lt;!DOCTYPE <span class=\"hljs-keyword\">plist<\/span><\/span> <span class=\"hljs-keyword\">PUBLIC<\/span> <span class=\"hljs-string\">\"-\/\/Apple\/\/DTD PLIST 1.0\/\/EN\"<\/span> <span class=\"hljs-string\">\"http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd\"<\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">plist<\/span><\/span> <span class=\"hljs-attr\">version<\/span>=<span class=\"hljs-string\">\"1.0\"<\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dict<\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">key<\/span><\/span>&gt;AppSecret<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">key<\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">string<\/span><\/span>&gt;{Seu app secret aqui}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">string<\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dict<\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">plist<\/span><\/span>&gt;<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"4346\" data-end=\"4393\">Adicione a chave de deployment no <code data-start=\"4380\" data-end=\"4392\">info.plist<\/code>:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">key<\/span><\/span><\/span>&gt;CodePushDeploymentKey<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">key<\/span><\/span>&gt;<br \/>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">string<\/span><\/span>&gt;{sua deployment key}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">string<\/span><\/span>&gt;<br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"4475\" data-end=\"4478\" \/>\n<h2 data-start=\"4480\" data-end=\"4509\"><strong data-start=\"4483\" data-end=\"4509\">Instala\u00e7\u00e3o do CodePush<\/strong><\/h2>\n<p data-start=\"4511\" data-end=\"4539\">Na raiz do projeto, execute:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">npm install <span class=\"hljs-attr\">--save<\/span> react-native-<span class=\"hljs-selector-tag\">code<\/span>-push<br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"4592\" data-end=\"4595\" \/>\n<h2 data-start=\"4597\" data-end=\"4625\"><strong data-start=\"4600\" data-end=\"4625\">Integra\u00e7\u00e3o no Android<\/strong><\/h2>\n<h3 data-start=\"4627\" data-end=\"4653\"><strong data-start=\"4631\" data-end=\"4653\">1. settings.gradle<\/strong><\/h3>\n<p data-start=\"4654\" data-end=\"4674\">No final do arquivo:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">':app'<\/span>, <span class=\"hljs-string\">':react-native-code-push'<\/span><br \/>\n<span class=\"hljs-title function_ invoke__\">project<\/span>(<span class=\"hljs-string\">':react-native-code-push'<\/span>).projectDir = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">File<\/span>(rootProject.projectDir, <span class=\"hljs-string\">'..\/node_modules\/react-native-code-push\/android\/app'<\/span>)<br \/>\n<\/code><\/div>\n<\/div>\n<h3 data-start=\"4862\" data-end=\"4885\"><strong data-start=\"4866\" data-end=\"4885\">2. build.gradle<\/strong><\/h3>\n<p data-start=\"4886\" data-end=\"4906\">No final do arquivo:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">apply <span class=\"hljs-keyword\">from<\/span>: <span class=\"hljs-string\">\"..\/..\/node_modules\/react-native-code-push\/android\/codepush.gradle\"<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<h3 data-start=\"4997\" data-end=\"5028\"><strong data-start=\"5001\" data-end=\"5028\">3. MainApplication.java<\/strong><\/h3>\n<p data-start=\"5029\" data-end=\"5037\">Importe:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-keyword\">import<\/span> com.microsoft.codepush.react.CodePush;<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"5094\" data-end=\"5131\">Substitua o m\u00e9todo <code data-start=\"5113\" data-end=\"5130\">getJSBundleFile<\/code>:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-meta\">@Override<\/span><br \/>\n<span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-title class_\">String<\/span> <span class=\"hljs-title function_\">getJSBundleFile<\/span>() {<br \/>\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-title class_\">CodePush<\/span>.<span class=\"hljs-title function_\">getJSBundleFile<\/span>();<br \/>\n}<br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"5230\" data-end=\"5233\" \/>\n<h2 data-start=\"5235\" data-end=\"5259\"><strong data-start=\"5238\" data-end=\"5259\">Integra\u00e7\u00e3o no iOS<\/strong><\/h2>\n<p data-start=\"5261\" data-end=\"5269\">Execute:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-built_in\">cd<\/span> ios &amp;&amp; pod install &amp;&amp; <span class=\"hljs-built_in\">cd<\/span> ..<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"5311\" data-end=\"5340\">No <code data-start=\"5314\" data-end=\"5329\">AppDelegate.m<\/code>, adicione:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-meta\">#import <span class=\"hljs-string\">&lt;CodePush\/CodePush.h&gt;<\/span><\/span><br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"5381\" data-end=\"5390\">Localize:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">return <span class=\"hljs-selector-attr\">[[NSBundle mainBundle]<\/span> URLForResource:@<span class=\"hljs-string\">\"main\"<\/span> withExtension:@<span class=\"hljs-string\">\"jsbundle\"<\/span>];<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"5482\" data-end=\"5496\">Substitua por:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-keyword\">return<\/span> [CodePush bundleURL];<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"5536\" data-end=\"5560\">Seu m\u00e9todo ficar\u00e1 assim:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">- (<span class=\"hljs-built_in\">NSURL<\/span> *)sourceURLForBridge:(RCTBridge *)bridge{<br \/>\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">if<\/span><\/span> DEBUG<br \/>\n<span class=\"hljs-keyword\">return<\/span> [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:<span class=\"hljs-string\">@\"index\"<\/span> fallbackResource:<span class=\"hljs-literal\">nil<\/span>];<br \/>\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">else<\/span><\/span><br \/>\n<span class=\"hljs-keyword\">return<\/span> [CodePush bundleURL];<br \/>\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">endif<\/span><\/span><br \/>\n}<br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"5783\" data-end=\"5786\" \/>\n<h2 data-start=\"5788\" data-end=\"5812\"><strong data-start=\"5791\" data-end=\"5812\">Exemplo do App.js<\/strong><\/h2>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-js\"><code class=\"whitespace-pre! language-js\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-title class_\">React<\/span> <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">\"react\"<\/span>;<br \/>\n<span class=\"hljs-keyword\">import<\/span> { <span class=\"hljs-title class_\">View<\/span> } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'react-native'<\/span>;<br \/>\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-title class_\">CodePush<\/span> <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">\"react-native-code-push\"<\/span>;<\/code><\/code><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title function_\">App<\/span>() {<br \/>\n<span class=\"hljs-keyword\">return<\/span> (<br \/>\n<span class=\"language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">View<\/span><\/span><\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">{{<\/span> <span class=\"hljs-attr\">flex:<\/span> <span class=\"hljs-attr\">1.0<\/span>, <span class=\"hljs-attr\">backgroundColor:<\/span> &#8216;<span class=\"hljs-attr\">green<\/span>&#8216; }}&gt;<br \/>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">View<\/span><\/span>&gt;<br \/>\n)<br \/>\n}<\/p>\n<p><code class=\"whitespace-pre! language-js\"><code class=\"whitespace-pre! language-js\"><\/code><\/code><span class=\"hljs-keyword\">export<\/span> <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-title class_\">CodePush<\/span>(<span class=\"hljs-title class_\">App<\/span>)<\/p>\n<\/div>\n<\/div>\n<hr data-start=\"6072\" data-end=\"6075\" \/>\n<h2 data-start=\"6077\" data-end=\"6108\"><strong data-start=\"6080\" data-end=\"6108\">Atualiza\u00e7\u00e3o via CodePush<\/strong><\/h2>\n<p data-start=\"6110\" data-end=\"6155\">Altere a cor de fundo de verde para vermelho:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-js\">&lt;<span class=\"hljs-title class_\">View<\/span> style={{ <span class=\"hljs-attr\">flex<\/span>: <span class=\"hljs-number\">1.0<\/span>, <span class=\"hljs-attr\">backgroundColor<\/span>: <span class=\"hljs-string\">'red'<\/span> }}&gt;<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"6221\" data-end=\"6265\">Execute o comando para lan\u00e7ar a atualiza\u00e7\u00e3o:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">appcenter codepush release-react -a {appcenter-username}\/{appname} -d {Staging\/Production}<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"6367\" data-end=\"6495\">Depois que a atualiza\u00e7\u00e3o aparecer no App Center, basta reabrir o app para visualizar a altera\u00e7\u00e3o tanto no Android quanto no iOS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CodePush Um aplicativo React Native \u00e9 composto por arquivos JavaScript e por quaisquer imagens associadas. Por\u00e9m, o metro bundler precisa empacotar e distribuir esses arquivos como parte de um bin\u00e1rio espec\u00edfico de cada plataforma \u2014 ou seja, um arquivo .ipa ou .apk. Depois que o aplicativo \u00e9 lan\u00e7ado, atualizar o c\u00f3digo JavaScript \u2014 incluindo corre\u00e7\u00f5es [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":4967,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","om_disable_all_campaigns":false,"footnotes":""},"categories":[1167],"tags":[],"class_list":{"0":"post-21966","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-uncategorized-pt"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Integra\u00e7\u00e3o Completa do CodePush no React Native<\/title>\n<meta name=\"description\" content=\"Aprenda como configurar e integrar CodePush no React Native para atualizar apps sem recompilar e publicar novamente nas lojas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integra\u00e7\u00e3o Completa do CodePush no React Native\" \/>\n<meta property=\"og:description\" content=\"Aprenda como configurar e integrar CodePush no React Native para atualizar apps sem recompilar e publicar novamente nas lojas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/\" \/>\n<meta property=\"og:site_name\" content=\"blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-26T12:14:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-26T12:14:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"arpita\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Iamprometteur\" \/>\n<meta name=\"twitter:site\" content=\"@Iamprometteur\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"arpita\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/\"},\"author\":{\"name\":\"arpita\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/c1fedf3f76083c818b85fbbb0bb1353a\"},\"headline\":\"Integra\u00e7\u00e3o Completa do CodePush no React Native\",\"datePublished\":\"2025-11-26T12:14:27+00:00\",\"dateModified\":\"2025-11-26T12:14:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/\"},\"wordCount\":460,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/\",\"name\":\"Integra\u00e7\u00e3o Completa do CodePush no React Native\",\"isPartOf\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg\",\"datePublished\":\"2025-11-26T12:14:27+00:00\",\"dateModified\":\"2025-11-26T12:14:59+00:00\",\"description\":\"Aprenda como configurar e integrar CodePush no React Native para atualizar apps sem recompilar e publicar novamente nas lojas.\",\"breadcrumb\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg\",\"contentUrl\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg\",\"width\":2560,\"height\":1440,\"caption\":\"How to Implement Microsoft CodePush in Your Mobile App Development Workflow\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/prometteursolutions.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integra\u00e7\u00e3o Completa do CodePush no React Native\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#website\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/\",\"name\":\"blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/prometteursolutions.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#organization\",\"name\":\"blog\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png\",\"contentUrl\":\"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png\",\"width\":211,\"height\":60,\"caption\":\"blog\"},\"image\":{\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/\",\"https:\/\/x.com\/Iamprometteur\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/c1fedf3f76083c818b85fbbb0bb1353a\",\"name\":\"arpita\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5211c411d8a9d59f9cbe170fbe23e7f1d1b7de0ab269a9cecbe7d89c5dcc1ca7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5211c411d8a9d59f9cbe170fbe23e7f1d1b7de0ab269a9cecbe7d89c5dcc1ca7?s=96&d=mm&r=g\",\"caption\":\"arpita\"},\"url\":\"https:\/\/prometteursolutions.com\/blog\/author\/arpita\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Integra\u00e7\u00e3o Completa do CodePush no React Native","description":"Aprenda como configurar e integrar CodePush no React Native para atualizar apps sem recompilar e publicar novamente nas lojas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/","og_locale":"en_US","og_type":"article","og_title":"Integra\u00e7\u00e3o Completa do CodePush no React Native","og_description":"Aprenda como configurar e integrar CodePush no React Native para atualizar apps sem recompilar e publicar novamente nas lojas.","og_url":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/","og_site_name":"blog","article_publisher":"https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/","article_published_time":"2025-11-26T12:14:27+00:00","article_modified_time":"2025-11-26T12:14:59+00:00","og_image":[{"width":2560,"height":1440,"url":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg","type":"image\/jpeg"}],"author":"arpita","twitter_card":"summary_large_image","twitter_creator":"@Iamprometteur","twitter_site":"@Iamprometteur","twitter_misc":{"Written by":"arpita","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#article","isPartOf":{"@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/"},"author":{"name":"arpita","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/c1fedf3f76083c818b85fbbb0bb1353a"},"headline":"Integra\u00e7\u00e3o Completa do CodePush no React Native","datePublished":"2025-11-26T12:14:27+00:00","dateModified":"2025-11-26T12:14:59+00:00","mainEntityOfPage":{"@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/"},"wordCount":460,"commentCount":0,"publisher":{"@id":"https:\/\/prometteursolutions.com\/blog\/#organization"},"image":{"@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/","url":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/","name":"Integra\u00e7\u00e3o Completa do CodePush no React Native","isPartOf":{"@id":"https:\/\/prometteursolutions.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage"},"image":{"@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage"},"thumbnailUrl":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg","datePublished":"2025-11-26T12:14:27+00:00","dateModified":"2025-11-26T12:14:59+00:00","description":"Aprenda como configurar e integrar CodePush no React Native para atualizar apps sem recompilar e publicar novamente nas lojas.","breadcrumb":{"@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#primaryimage","url":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg","contentUrl":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2023\/05\/How-to-Implement-Microsoft-Code-Push-in-Your-Mobile-App-Development-Workflow.jpg","width":2560,"height":1440,"caption":"How to Implement Microsoft CodePush in Your Mobile App Development Workflow"},{"@type":"BreadcrumbList","@id":"https:\/\/prometteursolutions.com\/blog\/pt\/integracao-completa-do-codepush-no-react-native\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/prometteursolutions.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Integra\u00e7\u00e3o Completa do CodePush no React Native"}]},{"@type":"WebSite","@id":"https:\/\/prometteursolutions.com\/blog\/#website","url":"https:\/\/prometteursolutions.com\/blog\/","name":"blog","description":"","publisher":{"@id":"https:\/\/prometteursolutions.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prometteursolutions.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/prometteursolutions.com\/blog\/#organization","name":"blog","url":"https:\/\/prometteursolutions.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png","contentUrl":"https:\/\/prometteursolutions.com\/blog\/wp-content\/uploads\/2021\/04\/new-logo.png","width":211,"height":60,"caption":"blog"},"image":{"@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prometteurSolutions\/timeline\/","https:\/\/x.com\/Iamprometteur"]},{"@type":"Person","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/c1fedf3f76083c818b85fbbb0bb1353a","name":"arpita","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prometteursolutions.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5211c411d8a9d59f9cbe170fbe23e7f1d1b7de0ab269a9cecbe7d89c5dcc1ca7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5211c411d8a9d59f9cbe170fbe23e7f1d1b7de0ab269a9cecbe7d89c5dcc1ca7?s=96&d=mm&r=g","caption":"arpita"},"url":"https:\/\/prometteursolutions.com\/blog\/author\/arpita\/"}]}},"_links":{"self":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts\/21966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=21966"}],"version-history":[{"count":2,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts\/21966\/revisions"}],"predecessor-version":[{"id":21968,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/posts\/21966\/revisions\/21968"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/media\/4967"}],"wp:attachment":[{"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=21966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=21966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prometteursolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=21966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}