Using config.xml to set iOS 10 Privacy Settings in PhoneGap Build

Using config.xml to set iOS 10 Privacy Settings in PhoneGap Build

I was finalizing an update to our Relocation America International app this week. Everything was going swimmingly. I built the app using the PhoneGap Build process, retrieved the binary, and uploaded it to the App Store. That’s when I received this:

Dear developer,

We have discovered one or more issues with your recent delivery for “RAInternational Connect”. To process your delivery, the following issues must be corrected:

Missing Info.plist key – This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team

The dreaded app rejection message. Ugh!

I did what most good developers would do and turned to Google to help me out of my quandary. Unfortunately, the most highly rated results were all over the map. Here were a few of the recommended solutions:

  • Use Cordova to remove the camera plugin and reinstall it using the options that add the privacy settings. Unfortunately, since we’re using PhoneGap Build, this wasn’t an option.
  • Take the *.ipa file to a Mac, open it in Xcode, find the info.plist file, and manually edit it. Since I had never used Xcode before, I wasn’t exactly chomping at the bit to go this route. Plus, the result wouldn’t be repeatable. I didn’t want to add another step to our build process for the app.
  • Install a plug-in that let me stuff the fields into the info.plist. This was certainly an option, but I was hesitant to create yet another plug-in dependency this close to release. Due to past experiences with plug-ins late in the game, I was having a hot stove moment and didn’t want to get burned again.

Fortunately, the PhoneGap Build documentation, which is usually less than helpful (sorry Adobe, just telling it like it is), came through. Their article on modifying manifests saved my bacon (click here for link).

It turns out, all I needed to add was a new config.xml file entry that targeted NSPhotoLibraryUsageDescription. Here is what I added, no plug-in required:

<gap:config-file platform="ios" parent="NSPhotoLibraryUsageDescription">
    <string>For uploading receipt images</string>
</gap:config-file>

Since I was using the camera plugin, I also added another entry for NSCameraUsageDescription.

Then it was rinse & repeat, meaning rebuild, grab the binary, and upload to Apple. This time, success! I got the message we all love:

You can now use this build for TestFlight testing or submit it to the App Store.

If you have any questions regarding your app, click Contact Us in iTunes Connect.

Regards,

The App Store team

While this seems like quite the hassle, I’m actually happy that Apple is concerned about user privacy. It helps users to understand exactly why apps need permission for specific features. Therefore, be certain that you put a little thought into the message that goes into the string field. The user of your app will see this message when they access the feature. In fact, I wouldn’t mind seeing Android following suit in the near future.

 

The Tragic Downfall of Blackberry

The Tragic Downfall of Blackberry

bothtogether

Remember that kid in high school who was popular, seemed to have it all, and then just disappeared? Maybe they never moved out of their parents’ house or they ended up at the local McDonald’s, taking your order whenever you stopped there on your sporadic visits to your parent’s home. That’s the kid that peaked in high school, and as bad as we feel for them that their lives ended up being extraordinarily ordinary, we secretly love that it never happened to us.

Blackberry is the kid that peaked in high school.

I had a Blackberry Pearl hand-me-down from my father when I was in high school. Just to age myself a bit, this was almost seven years ago when I began using the phone.  I absolutely loved that Blackberry. I used the phone until the end of its lifetime which ended with buttons missing, a track ball that wouldn’t roll smoothly anymore, and buttons that just wouldn’t click anymore. This was during the peak of Blackberry, just before the iPhone took over the world by storm. I still had friends who used Blackberry phones and we were all obsessed. The funny thing looking back is that Blackberry was and probably easily is still the phone I was most fond of and rarely complained about.

The full keyboard was revolutionary at the time. Honestly, you didn’t have to use T9 anymore and anyone who used to text on the old flip phones can attest to how incredibly annoying it was and how difficult to learn the process of texting was with a T9 keyboard. But the full keyboard on the Blackberry was amazing and especially because it was the QWERTY keyboard layout, only two keys per button was arguably way more awesome than three (sometimes four, we’re looking at you letter ‘s’).

blackberryflipkeyboard

Remember this was around the time but people thought flip phones were really cool? This was the last time Blackberry stayed “trendy”.

Who cared if the camera wasn’t that great? There weren’t many other phones boasting an amazing camera. For the average Joe, we were still using Cannons and Nikons to take photos on family vacations. Remember how photography with actual cameras was still
something people did 6-7 years ago? Blackberry was taking the world by storm; “Crackberry” became a term for the phone and the dedicated user base it had built.

Before Apple created iMessage, Blackberry had BBM (Black Berry Messenger) and for those who used it, it ruled. All you needed was another Blackberry users pin and you could send them unrestricted length text messages. All around, you were just cooler by using BBM. All up until, the iPhone launched.

The first problem emerged with how small of a consumer base Blackberry was building. As for a high school student like myself at the time, I couldn’t fully utilize the features on Blackberry phones.  For your every day and business needs, Blackberry phones were the “it” phone. Getting emails on your phone and being able to confidently type responses without worrying about how awful T9 was really revolutionized what you wanted to buy. Blackberry didn’t concern themselves with other target groups- they had their niche market and they were fine. No need to try to market to anyone else, you and everyone you knew that used their phones were doing plenty word of mouth advertising. Blackberry believed in
the loyalty of their consumer base.

Then the iPhone invaded. It was a well planned surprise attack. Once the iPhone caught fire you looked outdated carrying around a Blackberry- or literally anything that wasn’t an iPhone. The camera was better, the screen was better, the user face was amazing and simple to use, and Apple convinced you that you NEEDED the phone. You may not have wanted it, but man did you need it.

The big downfall Blackberry encountered, which I would consider their kiss of death, was their nonchalance about the beginnings of the iPhone. RIM, the company that owns Blackberry, was too confident in the loyalty of their consumer base. Talk about being stabbed in the back about a million times. RIM didn’t take the iPhone seriously, didn’t consider how seriously the iPhone was going to potentially dominate the market, so they didn’t prepare. Technology changes- that’s just one of the brutal ways the industry functions. Blackberry became so irrelevant so quickly it makes your head spin if you think about it too long.

Now I can’t speak for what the top guys of Blackberry were thinking, but I can only imagine it was along the lines of, “We have made a terrible mistake.” As they sat in their offices watching their market shares tank and loyal customers abandon them.

What really sealed the fate of Blackberry and turned it into the brunt of all jokes today was not adapting their software to be downloadable on Android or Apple products. Blackberry essentially refused to give into their rivals to keep their company alive. I mean, after the kind of attack they suffered with the iPhone release, I think they valued their pride over continuing a successful business platform. Because they ultimately missed their window to adapt their software to be available cross platform, Blackberry was swallowed whole by the technology shift. They were left behind, licking their wounds as their market shares tanked drastically. Today, Blackberry has made their software available on all the main platforms but no one cares. The last time I heard of anyone using a Blackberry was about three years ago, when my friend was trying to hold out hope.

My friend bought one of the touch screen Blackberry’s the company struggled to release a few years after the whirlwind of iPhone. The phone was terrible to say the least. It was littered with random glitches, the phone would freeze quite often, and she would complain she felt left out because she didn’t have an iPhone. Her phone completely quit on her about three months into their estranged relationship, and she jumped ship to join team iPhone. Her hopes of a better Blackberry days had died, along with her phone.

Although I personally did not join team iPhone, smartphones that mimicked the iPhone were quickly making their debuts and I ditched team Blackberry as soon as I graduated high school. Thus ended my great relationship with my Blackberry Pearl and it joined the depths of all other discarded Blackberry’s.

Let’s revisit our high school analogy. I attribute the iPhone’s takeover to high school graduation. As if Blackberry crossing the stage to receive their diploma was all the time they needed to lag just enough for the iPhone to swoop in and convert almost their entire user base. And then, just like that, Blackberry became the laughing stock of the mobile world as their stocks plummeted.blackberrypearl

Try going into a mobile phone store today to buy a Blackberry. I’ll bet you’re not going to find one. The stores today are dominated by iPhone vs. Android. I’m pretty sure if you asked a sales associate if they had Blackberry you would have to google a photo and say, “I want to see this phone right here.” The looks people get when they try to buy Blackberry phones must be hilarious. You can’t download the prominent apps that lead the market today onto your Blackberry phone. This puts you behind. Makes kids feel left out in their social groups. Makes you the brunt of all bad Blackberry jokes in the office.

So now Blackberry is trying to launch the Blackberry Passport 2 (Surprise, I didn’t even know there was a Passport 1) and having it run Android Lollipop (or maybe Marshmallow depending on how long the launch takes). They’re still keeping the keyboard off the screen which I find to be a critical design flaw. The technology has evolved to on screen keyboards, so I feel that’ll be a tough sell to resort people back to this type of screen change. Then there are rumors about “Venice”, which will try to rock the design of the very undesirable slide out keyboard. Blackberry is definitely trying, but it’s unfortunate it took them this long to decide to bring their A game.

But the market is competitive, and unless Blackberry is prepared to create a phone that will blow Google and iPhones completely out of the water, they don’t stand a chance. If they had competed with iPhone from the beginning, they may have stood a fair chance in remaining relevant. Perhaps they could be like Brittney Spears- recovering from a 2007 meltdown and coming back years later with a revamped image and public persona. It could happen.

So what have we learned from the downfall of Blackberry? Don’t be stubborn- accept that in the technologically dominated world we live in now that if you don’t keep up or stay one step ahead of your competitors, you become irrelevant. You have to keep an open mind in order to keep your business alive and thriving.

Though as we all learned from that kid who peaked in high school, the further away your glory years are, the less chance you have of recreating them.

We Watched- But Now Should We Upgrade?

We Watched- But Now Should We Upgrade?

Yesterday Apple held their event to let you know exactly what to expect in the new wave of Apple releases- we’re talking from the new Apple Pencil to the iPhone 6s Plus.

23c

– Apple, now that their giant event is over and the internet is moving on.

So should you try to crawl into your attic space to find your long lost sleeping bag to wait with the other thousands of people who want to be some of the first to own the latest iPhone?

(more…)

Hudson Company Mobile App 2.0 Launch

Hudson Company Mobile App 2.0 Launch

The Hudson Company v2We are excited to announce the launch of the Hudson Company’s newly revamped mobile application, which is available on phone and tablet devices by going to their company website at www.thehudsoncompany.com. Located in Chicago, IL, The Hudson Company is a boutique brokerage that
focuses on the North Shore market. Not your average brokerage, they devote their time and energy to differentiating themselves from the competition in more ways than one. With top of the line marketing and a broad community inspiration pushing their brand forward, we strove to develop a mobile application that highlighted the value that they bring to the market. Working closely with their team, we developed an application   that demonstrates The Hudson Company’s close attention to detail while simultaneously creating a brand alignment between their web and mobile platform. We see mobile applications as a valuable piece and extension of a brokerage’s brand and value proposition. From the web to the phone, the experience should remain a seamless transition. Seamless brand integration is important to establish through all online and offline outlets, which is what we aim to do with all of our clients.

What Makes Hudson Unique

Already standing apart for their impeccable marketing, The Hudson Company needed a way to apply this differentiation to their mobile presence. What distinguishes The Hudson Company’s marketing from their competitors is the detail and work they place into each property listing. It starts with the high resolution photography that they generate for each property. They incorporate these photos into a digital brochure and virtual video tour that provide all of the information that a prospective buyer would like to know about a property before deciding to tour the home. We were tasked with the challenge of taking this incredible marketing platform The Hudson Company has created in their existing online and offline presence and translating that into a user friendly mobile website. Through close interaction with their team, we were able to implement a design that exceeded expectations.

Transitioning from Web to MobileTHC_Property_detail

Since The Hudson Company was all about the user experience and had an established brand design in mind, we worked closely with them to make sure their mobile platform emulated this. The result was a modern, sleek, user friendly design throughout all the pages and resources on the application. We took special care in making sure the high resolution photos of their property listings were portrayed just as beautifully on the mobile interface. So what specifically makes their new application stand out?

1. The design. With cleaner colors, brighter backgrounds, and smooth transitions between pages, the design stands apart. It is customized specifically for their brand and completely one of a kind and unique to The Hudson Company – something that was already making them stand apart from other competitors. The design reflects high end quality and care, which helps their clients to recognize and sets the expectation of the high level of service The Hudson Company provides to their clients.

2. Implementation of their web marketing. We didn’t just leave the application completely naked with only minimal marketing that the company had already worked so hard on. We implemented it, which really gives their mobile website some leverage in the market. We incorporated all of the high resolution photographs of their listings, the video tours, and the digital brochures. We paid attention to detail to ensure that the resolutions and clarity of the images remained intact when switching platforms, thereby maintaining our philosophy of seamless brand transition from web to mobile.THC_Agent_detail

3. Now includes tablets. Mobile doesn’t just mean phones anymore, and with the new revamp we wanted to make sure tablets weren’t left out. More and more users have tablets today, but not enough applications are formatted to look their best on them. We decided to change this by giving The Hudson Company a leg up on the competition by ensuring that their newly renovated application also looked flawless on tablets.

4. Highlighting the Team. We wanted to shine a brighter spotlight on their broker associates, especially considering the personalized boutique nature of the brokerage and their involvement in the community. New bios were added complete with high resolution photos along with all of their contact information. From the user perspective, you can not only see and learn about members of the team, but also contact them with a simple tap. Ease of contact exemplifies the personal touch The Hudson Company includes in their interactions with clients.

It’s Just the Beginning

2.0 only scratches the surface of what’s possible when it comes to the mobile platform. As the brokerage continues to grow and develop their brand, so will their mobile application grow and develop with them. Keeping The Hudson Company on the forefront of burgeoning technology enables them to be the leading brokerage in both their market and the industry.

 

PhoneGap and Sencha Cmd debugging techniques

If your wrapping your Sencha Touch application in PhoneGap/Cordova using Sencha Cmd to automate the tasks here are some tips for when the process does not go smoothly.

First off since your starting with an existing Sencha Touch application you initialize the project for PhoneGap with this Sencha Cmd syntax:
sencha phonegap init App-Id App-Name
App-Id is usually in reverse domain notation (com.company.AppName) but this is also used as the package in the resulting Java (at least for Android) source file.  Be sure you get it right or if you want to change it I suggest doing a sencha phonegap remove and starting over as the builds tend to fail silently in cases like this.

Also note that App-Name should be the same as the value in the “name” property in the Sencha Touch app.json config file.

 

If all you get is a white screen in the emulator there is probably a JavaScript exception or bad asset reference happening before PhoneGap/Cordova initializes.  Remember this is just an html5 app so try loading it directly in your browser (file://) and then refer to the browsers developer tools console for hints.

In Chrome F12 followed by Ctrl-O then navigate to your Sencha project directory and select the index.html in the phonegap/www directory.

 

If your using Adobe’s phonegap build service they do have built in debugging but if your app is not launching correctly or hangs before the weirne debugger sees your target try some of these techniques:

  • Download the .apk file from build.phonegap.com and load it into a running Android emulator with: adb install path/to/app.apk
  • In the case where a local build works but pushing to the phonegap build service is failing you can zip up the contents of the phonegap/platforms/android/ directory for example and manually upload it via their web interface.  This was useful for me when my local phonegap install was 3.5.0 but the Adobe service only supported up to v3.4.0

 

In the case that your sencha app build -run native command is failing silently and depending on your remote setting (phonegap.local.properties) either is not spawning the emulator or not uploading your app to the phonegap build service try executing phonegap directly:

From your Sencha project directory cd phonegap then for example phonegap build android This will give you much more verbose output which hopefully will point you to your problem.

References:

  • http://phonegap.com/blog/2013/11/20/SenchaPhoneGap/