I have a build/test/deploy process for a React Native app that's supported by App Center but I need to move my repo into GitLa. Per the "Connecting to Self-Hosted GitLab Instances" section in the App Center docs, "The instance must be reachable over the internet". Unfortunately, our repo cannot be reachable over public internet, so I've been looking into replacements for App Center. I came across fastlane and noticed that it does pretty much everything App Center does (and App Center actually just uses fastlane under the hood.) So I have a few questions:
What purpose does App Center fufill over that of what tools like fastlane can do? I imagine App Center just simplies it a bit by pulling the utility functions of fastlane together into more of a user product. Is that correct?
Is there any way to accomplish the capabilities of App Center's CodePush (release small features/bug fixes without requiring rebuilding the binary and redistributing it again through the app stores) through some other tool?
In addition to fastlane, I've also seen recommendations for Bitrise, CircleCI, and Expo EAS. Do any of these tools fufill the needs covered by App Center?
Sorry, I know that's a lot all at once. Very much appreciate the help!!
Related
I am new to react-native and implementing simple app where app will monitor the mobile's clock time and should set some flags so as to notify user to perform some task when he starts the app.
I want to continuously monitor mobile's clock time as a background job in the react native app such that, when user opens the app and if specific time has already passed, it should set some flag to take future decision.
After some research over blogs, I found that react-native-background-task and/or background-timers can be used. But I am finding difficulty in implementing it. Can anyone help me with the implementation example for the same.
Thank you in advance.
So, from your post I'm going to assume a few things. One being you'll develop on Android as well as iOS, you just want to use a plugin (not code a module yourself).
Unfortunately, unless I'm mistaken - there's no simple answer and I'll explain.
As Android and iOS go forward they are starting to limit usage of Apps in the background, specifically Android goes into 'Doze' mode and iOS works in a similar fashion.
For Android, you'll need to consider a few things and I'll concentrate on them, as you'll need to know this before actually creating a RN app.
Doze Mode
Starting from Android 6.0 (API level 23), Android introduces two
power-saving features that extend battery life for users by managing
how apps behave when a device is not connected to a power source. Doze
reduces battery consumption by deferring background CPU and network
activity for apps when the device is unused for long periods of time.
App Standby defers background network activity for apps with which the
user has not recently interacted.
While the device is in Doze, apps' access to certain battery-intensive
resources is deferred until maintenance windows. The specific
restrictions are listed in Power Management Restrictions.
Doze and App Standby manage the behavior of all apps running on
Android 6.0 or higher, regardless whether they are specifically
targeting API level 23. To ensure the best experience for users, test
your app in Doze and App Standby modes and make any necessary
adjustments to your code. The sections below provide details.
Cruically, you'll need to note:
The system does not allow sync adapters to run.
The system does not allow JobScheduler to run.
So firstly for android, you'll (probably) need to ensure your app is in a 'whitelist'. You can check the requirements of the list here:
https://developer.android.com/training/monitoring-device-state/doze-standby
Or, you can access the maintenance window with a plugin like here:
https://github.com/transistorsoft/react-native-background-fetch
Testing
Android give you some tools to do so, mainly running:
$ adb shell dumpsys battery unplug
$ adb shell am set-inactive <packageName> true
Headless JS
You can check out headless tasks, which could suit your situation:
https://facebook.github.io/react-native/docs/headless-js-android
Caveats:
Although Android state that the operating system itself acts like documented, devices themselves can have software built in which essentially kills background processes. Nokia is one of the worst. So be aware of this.
I am new to iOS platform(SWIFT - iOS9- Xcode7.3), I developed one Social Networking app in Swift and want to see crash reports of the app in the mobile as well as in Xcode. I did the process of Certifications,App ID, Provisioning Certificates and all...(whether all these are necessary for testing the app) I started with test-flight but I am not finding their SDK. So how to go with the step by step process of testing the iOS app before I go with the production.
Let me know if there are any other tools other than test flight. or What is the right way to do the process of testing and then production to the Apple Store. I dint find any proper answers please help.
Test flight is integrated with apple iTuneConnect app store build,As of now you can not get the crash report for beta build. App store build will not share the crash report to developer until it was not shared by user device (by enabling Share with app developer setting).There are many crash reporting tools
I will recommend to use fabric
We use React/Redux for our web-based app in production, and it works really-really well. We've been curious about React Native, and have a few quick questions. We're looking for facts only, not opinions, and not interested in starting a debate.
In order to build our app, we would need the following:
push notifications - I see a few projects on github, but does anyone have a robust solution running in production for a real app?
background processing - what happens when this app isn't running in the foreground (does background processing run similarly as other native apps, i.e. can I go to the Apple Setting app and disable the background worker threads?
web sockets - again, I've seen a few projects on github with experimental results, and yes I've heard that "this is trivial to implement, you just have to write a poly-fill". What I want is a drop-in solution, that's well tested.
in-app purchases - has anyone connected react native to Apple's in-app purchase system.
Thanks! I realize that react-native is in early beta, but in order for us to build an app efficiently, we need to make sure these basic things are ready to go.
Push notifications are included with React Native although the API is not as mature as core APIs like the view system.
React Native actually pauses some of its work when the app is backgrounded and background processing has not been a focus yet. You would instead want to delegate work to a dispatch queue. This might work for your use case if the background processing doesn't involve application logic, which you want to keep in JS.
WebSockets work reasonably well with React Native. Several contributors have helped build up WebSocket support. Out of your four requirements, I would say that WebSockets are the best supported.
There are npm packages like react-native-in-app-utils that expose the IAP APIs.
Title pretty much explains it. Does it render JS from an external codebase so I can simply push new updates through git, or do I need to actually push the changes through App Store?
This is my previous answer, which is getting downvoted into oblivion because it didn't predict something cool like CodePush coming to React Native :)
React Native compiles to an iOS binary. Updates need to be sent to the
App Store, unless you're simply using React Native for its WebView
and rendering an existing webpage on the client.
Updated 6/2/16
It looks like Microsoft has a sweet plugin for CodePush found here that lets you push changes remotely to your React Native app without having to send the update through the App Store.
Here's a quote from the README docs:
NOTE: While Apple's developer agreement fully allows performing
over-the-air updates of JavaScript and assets (which is what enables
CodePush!), it is against their policy for an app to display an update
prompt. Because of this, we recommend that App Store-distributed apps
don't enable the updateDialog option when calling sync, whereas Google
Play and internally distributed apps (e.g. Enterprise, Fabric,
HockeyApp) can choose to enable/customize it.
I'm actually working on a project (with the React Native Playground team - https://rnplay.org/about) that will allow you do live update your apps JS on the fly without submitting an update to the App Store. It's called Reploy, http://reploy.io
We will be open-sourcing the first portion of it very soon (the updater module). There will also be a service that will help you to manage your updates and even deploy your app to TestFlight and the App Store when needed (App Store updates are still needed when adding a new native module or static assets).
Also, just so you know, Apple has allowed this type of auto-updating via item 3.3.2 in the "iOS Developer Program Requirements" document, it says:
3.3.2 An Application may not download or install executable code. Interpreted
code may only be used in an Application if all scripts, code and interpreters are
packaged in the Application and not downloaded. The only exception to the
foregoing is scripts and code downloaded and run by Apple's built-in WebKit
framework or JavascriptCore, provided that such scripts and code do not change
the primary purpose of the Application by providing features or functionality that are
inconsistent with the intended and advertised purpose of the Application as
submitted to the App Store.
https://developer.apple.com/programs/ios/information/iOS_Program_Information_4_3_15.pdf
You could push an update to a remote user if you had linked to an external bundle and had the IP / correct ports forwarded, however Apple do not allow this for released AppStore apps.
For beta testing remote apps you might want to try exponent http://exp.host/
Update---
For completeness, it should be noted that if you are part of the Apple Enterprise program you do not need to publish Apps to the AppStore at all, you can post them to end users via a download link.
I work on a project called AppHub that lets you update JavaScript and images without re-submitting to the App Store. The iOS SDK will be open source, but for now you can use the hosted service to manage new builds of your app.
I have a small app I've made that I intend to make available on both iTunes and on Android Market (AM).
I have purchased the developer certifications for both, built my app with the Android SDK and the iOS Xcode SDK. So I think I'm most of the way along.
I'm a little fuzzy on the steps after this, though. When I launch my app, I'd like it to be available on each market on more or less the same time. I'd also like to do a little testing to try and download each app to different people's devices for a beta phase. Also, my understanding is that iTunes requires some sort of approval before it goes live (does Android require the same?).
So, what I'd like to do is be able to put my app on both AM and iTunes, but have it not be publicly available. A sort of private phase, where I can test it, have selected testers download it, make sure it is working fine, and maybe even get Apple (and Android) approval.
Then, when I'm ready to go live, then mark my apps as public.
Is there anything like that on either market? If I upload my app to either market, is it from that moment publicly available?
If there isn't any such "private" phase, what is the usual process for testing the app on different devices before making it available for sale?
The android developer site confirms that you can upload your app without publishing to allow for final testing. See more information here: Publishing on Android Market (under "Configuring options and uploading assets" header). When you actually publish the app it should be up within minutes. See this answer as well Just uploaded Android App: How long before app shows in Android Market search?
Apple has a different approval which can take hours or weeks depending on how lucky you are :) I personally have not submitted an app for approval though so I don't know if there's a way to get approval and then delay the release. I don't have a dev account with Apple so I can't log in to see their app approval guidelines apparently, but maybe this has some useful info: iOS App Store Approval Guidelines