“We are living in unprecedented times.” I think I have heard that phrase an unprecedented and almost unbearable number of times in 2020. From a social/economic/political point of view, it is very true. The world has faced major troubles before, but 2020 has definitely had a collection of challenges never seen before. We’ve lost loved ones, jobs, routines, and opportunities. To many, “unprecedented times” has become a nice way to say “a year that sucks.”
But when talking about technology instead of COVID-19, what do we think of “unprecedented times?” To me, it’s what makes me get up in the morning. I love technology because it is always changing. The challenge I will face today will build on things I dealt with yesterday, but will require learning about something new, adapting something old, or thinking about something in a different light. We thrill to see unprecedented inventions, unprecedented ways to combine data, unprecedented approaches to our problems. Because that’s where we advance. That’s where we grow. That’s where we can change the world.
So as we prepare for 2021, my technology resolution is to keep trying to make each day unprecedented. Each day I want to learn something new, try to do something different, try to talk to someone new or about some new topic, to refactor something that used to be good enough, or to just look at things in a new light.
And it makes me wonder, can we who love changes in technology, take that mentality into the rest of our lives too? 2021 will surely still have unprecedented challenges. But instead of mourning the loss of normalcy, can we see this as an opportunity to get out of our comfort zones, learn new skills, build new relationships, serve different people, make things better, or just see things differently? Maybe, just maybe, we can let these unprecedented times create unprecedented growth in us.
Update 6/13/2014: Fixed instructions to support XCode 5.1.1
Update 11/4/2015: Fixed filename of the entitlements file (use hyphens, not underscores)
We use PhoneGap Build to compile a number of iOS apps. It saves us the complexity of setting up and maintaining XCODE/PhoneGap build environments. We simply upload our web code and corresponding configuration files and get back an .ipa file ready for distribution.
One of our clients uses the app we build for in-house enterprise deployment. They need a copy of the .ipa file signed with their Enterprise certificate and their provisioning profile. They said “please just provide us an .xcarchive file so we can open it in the XCODE Organizer and distribute it.” But all we get from PhoneGap Build is an .ipa file. So what do we do?
Edit 2/27/2014 — There’s a new 3rd Party Plugin on PhoneGap Build that is probably a much better way to do this. I haven’t personally tried it yet, but check out the Customer URL Scheme plugin: https://build.phonegap.com/plugins/433
I love PhoneGap Build. It makes the whole process of building a hybrid app easy. No messing around with build servers for each type of device, no installing of patches when PhoneGap versions come out, and they have an API for automating builds. But the hidden cost is the inability to modify the native code when you want to. You are stuck with the options Build offers you. One of these limitations is in URL schemes.
iOS has always supported URL Schemes. This allows your app to respond to a URL. You’ve probably noticed that any url that starts with “mailto://” opens the Mail app and “maps://” opens the Maps app. You can register your own scheme so that “myapp://” opens your app and you can see any information passed in that URL. It’s a great way to make web pages link to your app and to have two apps talk to each other.
But while recent versions of PhoneGap have some built-in support for URL schemes, setting it up requires registering the scheme in your info.plist file. It’s a straightforward entry where you set CFBundleURLName and CFBundleURLSchemes (nice tutorial for iOS devs here). But since PhoneGap Build does not let you alter the info.plist file and the config.xml file does not support setting these values, you’re out of luck. There are requests to get this support added, but Adobe has not added it yet.
Never fear – I found a great workaround. Yes, it’s something of a hack, but it works. The secret is to use the officially supported FacebookConnect plugin. This plug in is meant to give access to Facebook for Single Sign On. We don’t need that functionality, but when the plugin is included in your project, it does setup the info.plist with a URL scheme.
I had two projects that I had published to the web server many times from Visual Studio 2010. I use web.config transformations to set my connection strings different based on which server I’m publishing too.
But while traveling I needed to make some edits using Visual Web Developer 2010 Express. When I published from that, I started seeing that my connection strings were getting replaced with something like “$(Replaceable Token…)” Huh?
After googling, the fix was easy. I had to open my .csproj file and add:
in the <PropertyGroup> section near the top. Not sure why I suddenly needed this, but it solved the problem!
A while back I needed to program a page flip effect in Silverlight, and Rick Barraza had an incredibly thorough blog post with lots of examples and great visuals. Now he has done it again, this time for HTML5 Canvas:
The Secret to the Page Flip in HTML5/Canvas for Windows8 and iOS | rbarraza.com.
Unfortunately I can’t seem find the old Silverlight blog post or I’d post that too.