Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

How to Integrate Code push with React Native (IOS & Android)

Running React-Native

  1. npm install -g react-native-cli
  2. react-native init SampleCodePushApp
  3. react-native run-ios

Verify if app is working, you should get following screen.

IOS React App

Install Code-Push

  1. npm install -g code-push-cli
  2. if you havn’t register, otherwise skip: code-push register
  3. code-push app add SampleApp-iOS ios react-native
  4. code-push app add SampleApp-Android android react-native OR appcenter apps create -d <appDisplayName> -o <operatingSystem> -p <platform> then add branches appcenter codepush deployment add -a <ownerName>/<appName> Stagingappcenter codepush deployment add -a <ownerName>/<appName> Production, otherwise you won't get any key
  5. https://mobile.azure.com/users/[YOUR_USERNAME]/apps, go to this link and verify your apps are created successfully.
  6. react-native link react-native-code-push
  7. Enter the keys, when asked (to retrieve keys: code-push deployment ls SampleApp-Ios -k)
  8. Run application and verify everything is working

IOS React App

Prepare App for code push

  1. create new index.js on root as ios and android both will have same
  2. layout copy paste everything from index.ios.js to index.js replace the content of index.ios.js and index.android.js with require('./index.js')
  3. Run application again and verify everything is running as before.

IOS React App

Decouple code into components

Index.js should look like:

export default class SampleCodePushApp extends Component {
render() {
return (
<App/>
);
}
}

create new file at ./src/components/App.js and copy paste below code:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
class App extends React.Component {
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App;

Run app and verify everything is working as before.

IOS React App

DONE! let's jump back to code push.

Integrating Code-Push

For IOS your info.plist, NSExceptionDomains section should look like that:

<dict> <key>NSExceptionDomains</key>
<dict>
<key>codepush.azurewebsites.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepush.blob.core.windows.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>codepushupdates.azureedge.net</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Your App.js should look like:

import React from 'react'
import {
StyleSheet,
Text,
View
} from 'react-native';
import CodePush from 'react-native-code-push'
class App extends React.Component {
constructor () {
super();
this.state = {
logs: ''
}
}
codePushStatusDidChange(status) {
let msg = '';
switch(status) {
case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
msg = ("Checking for updates.");
break;
case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
msg = ("Downloading package.");
break;
case CodePush.SyncStatus.INSTALLING_UPDATE:
msg = ("Installing update.");
break;
case CodePush.SyncStatus.UP_TO_DATE:
msg = ("Up-to-date.");
break;
case CodePush.SyncStatus.UPDATE_INSTALLED:
msg = ("Update installed.");
break;
}
console.log(msg)
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
codePushDownloadDidProgress(progress) {
let msg = progress.receivedBytes + " of " + progress.totalBytes + " received.";
console.log(msg);
setTimeout(() => {
this.setState({
logs: msg
});
}, 2000);
}
render(){
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<Text style={styles.instructions}>
Version 1.1
</Text>
<Text style={styles.instructions}>
{this.state.logs}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
export default App = CodePush(App)

Run the app on ios, press cmd+D and click remote Debugging. After that open http://localhost:8081/debugger-ui and look into console. Whenever you’ll refresh your app, you should see something like:

screen shot 2017-08-08 at 2 49 35 pm

And your App should look like:

screen shot 2017-08-08 at 3 58 23 pm

Which means on launch your application is looking for code-push update. Code push is integrated now but only for debug mode, lets see how we can release the app for IOS and Android.

Go to my another tutorial for Release Build for IOS/Android

If you followed the above release build tutorial then till now you should have release builds running on your device or simulator.

Update your app from code push

IOS
  1. Open your project in xcode and change the Build number from 1.0 to 1.1, by clicking on name of project and then change the build version.
  2. Push the change to Code-Push with following command: code-push release-react SampleApp-Ios ios
  3. After the push you can verify it at, https://mobile.azure.com/users/[USER_NAME]/apps/SampleApp-Ios
  4. Run application in Release mode and verify everything is working as expected.
  5. Now go back to application code and change text, once you change the text then push to code-push with following, code-push release-react SampleApp-Ios ios
  6. Come to your simulator again, relaunch the app you will see the text as Checking for update, Downloading Package and update installed.
  7. Now relaunch the app and you should see the change in your application without pushing your app to app store.
  8. Only Difference, if you want to run the same app on device, then you need to sign it with developer account. And then it will run on your device even.
Android
  1. Push the latest code to code-push android app with following command:

    code-push release-react SampleApp-Android android

  2. Release build for android, for that go to Release Build for IOS/Android

  3. Once you have the Release build, then change the text and push it to code-push.

  4. Relaunch the app and you should see the update installed text.

  5. Relaunch app and now you should see the change

About

Integrate code push with react native (IOS & Android)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors