fastlane are an awesome bunch of tools. Josh Holtz has recently started Fastlane Screencast, a website with videos/tutorials for explaining and implementing built-in fastlane tools, fastlane actions, third-party fastlane plugins, continuous integration, and anything else that fastlane can possibly do.
The first video covers integrating fastlane into your Ionic Framework build process:
A second tutorial – covering dotenv and environment variables – is already up too 🙂
One of our awesome engineers has been working hard to bring WKWebView to Ionic apps and is working to bring the new plugin into Cordova! The new plugin will work with both Ionic V1 and Ionic V2 apps. In fact, it should work with any iOS Cordova build!
Deeplinking as a concept has evolved heavily over the last few years, with mobile devices going from supporting custom URL schemes (like instagram://) to now opening native apps in response to navigation to URLs (like amazon.com).
To help Ionic developers deeplink more easily, we are excited to announce a new, official way to deeplink into both Ionic 1 and Ionic 2 apps (and non-ionic Cordova apps). Let’s take a look at how it works
A website that I’ve found to be very helpful whilst diving into creating Hybrid Apps (be it with or without Ionic) is Gone Hybrid, containing quite a few helpful articles to get you kickstarted on a few specific things such as adding audio effects, animations, etc.
The Ionic Package service allows you to create development and production builds of your app that can be submitted to the Apple App Store and Google Play Store, or be installed directly on your friends’, family members’, and colleagues’ devices.
That’s it. Once your build is finished, you just download the distribution file we provide and carry on. Ionic Package takes care of all the heavy lifting and lets you get back to focusing on what really matters: your app.
$ ionic package build ios --profile PROFILE_TAG
The people at Ionic really have gotten this thing directed in the right direction: build an open-source framework and augment it with usefull (soon-to-be commercial) parts such as “Ionic View” and now this “Ionic Package”. It’s tools like this that make it more easy to develop hybrid apps.
If you’re familiar with build servers like Circle-CI or Travis-CI stuff like this – the result of ionic package list – might look familiar:
Add the snippet above at the end of the file, right before the closing </dict></plist>
Do note that you’ll have to (re)do this every time you run ionic platform add ios(which can happen when working in a team with multiple people)
Fixing it automatically
Alternatively you can use a before_emulate hook to have this change applied automatically before starting the iPhone Simulator.
Put the contents below in ./hooks/before_emulate/010_ios_allowarbitraryloads.sh
Make the script executable (chmod 755 ./hooks/before_emulate/010_ios_allowarbitraryloads.sh)
Every time you (or one of your teammates) runs ionic emulate ios it will check if the change in platforms/ios/projectname/projectname-Info.plist has already been made or not. If not, the settings are added.
# Allow iPhone Simulator to make Arbitrary Loads
# @ref https://www.bram.us/2015/09/29/ionic-emulate-vs-xcode-7/
XCODEVERSION=`xcodebuild -version | grep Xcode | sed 's/Xcode //g'`
XCODEMAINVERSION=`echo $XCODEVERSION | cut -d "." -f 1`
PROJECTNAME=`xmllint --format --xpath "//*[local-name()='widget']/*[local-name()='name']/text()" config.xml`
if [[ "$CORDOVA_PLATFORMS" == "ios" ]]
if [[ "$XCODEMAINVERSION" > 6 ]]
echo "iPhone Simulator (XCode $XCODEVERSION) is being used. We might need to adjust $PROJECTNAME-Info.plist to allow Arbitrary Loads!"
HASSETTING=`$PLISTBUDDY -c "print :NSAppTransportSecurity:NSAllowsArbitraryLoads" "$TARGET" 2>&1`
if [[ "$HASSETTING" == "true" ]]
echo " - NSAllowsArbitraryLoads already enabled. Not adjusting $PROJECTNAME-Info.plist"
echo " - NSAllowsArbitraryLoads not enabled. Adjusting $PROJECTNAME-Info.plist"
$PLISTBUDDY -c "Add :NSAppTransportSecurity dict" "$TARGET"
$PLISTBUDDY -c "Add :NSAppTransportSecurity:NSAllowsArbitraryLoads bool YES" "$TARGET"
Did this help you out? Like what you see? Consider donating.
I don’t run ads on my blog nor do I do this for profit. A donation however would always put a smile on my face though. Thanks!
For a current Ionic project I’m working on I needed a vertical slide out panel (toggle panel) to store in some content that may be hidden by the user. As I couldn’t immediately find such a component in Ionic itself I decided to create one myself: ion-drawer-vertical (source available on GitHub). The result is a set of directives one can use. The directives also ships with a necessary controller and a delegate to allow one to manipulate the drawer from any scope. Both top and bottom drawers are supported.