Posted on Leave a comment

Ready. Set. Code.

On June 22, WWDC20 takes off. Get ready for the first global, all-online WWDC by downloading the Apple Developer app to stay notified on all the latest news, with updates for events and sessions. More announcements to come in early June.

And now through May 17, student developers from around the world can showcase their love of coding by submitting their own Swift playground to the Swift Student Challenge. Winners will receive an exclusive WWDC20 jacket and pin set.

Learn about the challenge

Posted on Leave a comment

Billing Grace Period Data Now Available in App Store Connect

The Sales and Trends section of App Store Connect now provides details about the number of subscribers in Billing Grace Period — a feature that lets subscribers with unsuccessful auto-renewals continue accessing your app’s paid content while Apple attempts to collect payment, allowing them time to fix the issue. New subscription events in Sales and Trends indicate the number of renewals and cancelations during Billing Grace Period, and the Subscription Report includes a new column with the total number of subscriptions in Billing Grace Period.

Get details on viewing subscriptions data

Posted on Leave a comment

Meet the developer: Shelley Taylor

RefAid supports migrants around the world.

In 2015, a 3-year-old Syrian boy named Aylan Kurdi drowned in the Mediterranean Sea trying to reach Europe with his family. The image of his body washed up on a beach in Lebanon devastated American startup veteran Shelley Taylor.

“These migrants are coming into Europe, they get here, and they don’t know how to find the basic things—the supermarket, shelter, the doctor,” says Taylor, CEO of Trellyz, which creates software for cities and nonprofits. “And I thought, they all have smartphones, maybe I can create something that will let them find what they need when they need it.”

Over a weekend she built RefAid—Refugee Aid App and launched it in the UK and Italy in February 2016. The app catalogs aid organizations’ services for migrants and refugees seeking to build a new life in Europe and, increasingly, the United States.

The app reduces its language barrier with icons in addition to words.

These days, the app is evolving from one designed to meet the basic daily survival needs of refugees to one able to tackle the many challenges of the mounting migrant crisis at the U.S. border and provide information during COVID-19.

Services have been added to address family separation, offering constantly updated intel about legal aid as well as geo-targeted push notifications with crucial on-the-ground information. For example, RefAid might send an alert with a phone number for free legal help in an area where migrants are being rounded up.

The app (which is now available in 25 countries, with some 5,000 aid organizations contributing) will soon include services in most U.S. states. Taylor and her team are constantly reaching out to more nonprofits and public service providers to include them in the app. Through a web-based content management system, they can manage and update their offerings and communicate directly with people.

These migrants are coming into Europe, they get here, and they don’t know how to find the basic things—the supermarket, shelter, the doctor.

Available in English, Arabic, Farsi, Spanish, and soon French, the app directs refugees (using geolocation) to aid within a 100-mile radius. The services are sorted by categories like legal, food, education, work, media, faith groups, psychological, and more.

Solving one problem at a time

Before launching RefAid, Taylor—who was raised in Palo Alto, California, but lives in Europe—needed to contact aid organizations and have them provide a list of services that could help migrants in need. She started with the United Nations High Commission for Refugees and the British Red Cross but quickly ran into a roadblock: Most of them didn’t readily know all of the services they provided.

The worldwide refugee crisis broke Shelley Taylor’s heart—so she made an app to help.

Taylor waited weeks for aid groups to get back to her. “We called them and said, ‘Did you change your mind? Where are your services? We just need a little spreadsheet.’” And they said, uniformly, ‘Oh, we have to call each of the offices to ask them because nothing is written down.”

Eventually, Taylor created what may be the first global database of nonprofit services. She doesn’t charge the organizations to use the app, covering the development and operating costs herself. “We didn’t want anyone to have an excuse to say no to putting their services on the app, because it’s such a huge problem and people really need help.”

Help finding help

Although RefAid doesn’t have the capacity to respond to real-time updates from refugees and migrants, Taylor has anticipated the needs of people arriving by either land or sea.

“When you come into Greece, for example, the organizations don’t have the right to go to the beach directly. They have to stay in their offices — that’s the law. But, if somebody has told migrants to look at the app, those migrants can discover that around the corner there’s a Red Cross office and food vouchers, which they couldn’t have found otherwise.”

Taylor in the French town of Calais, home to the notorious Calais Jungle refugee encampment where some 10,000 refugees sought shelter from 2015 to 2016.

The app is used primarily in the U.S., the UK, Belgium, France, Italy, and Greece. After the first attempted U.S. travel ban in January 2017, RefAid quickly deployed in 19 American cities, cataloging legal services nearby for those trapped at U.S. airports. In May 2018, 40 other cities—including Oslo, Athens, and Amsterdam—began listing their services.

During the current U.S. migrant crisis, new services from different aid organizations are being added daily. Some large resettlement organizations in the U.S., such as the International Refugee Committee, have actually started preloading cell phones with the RefAid app and giving them to migrants.

“It’s exciting to see how it’s growing,” Taylor says, “but we still haven’t mapped the whole world. And that’s our goal: to map all of the services available to refugees and everyone else in the whole world. It’s just a step at a time.”

Originally published on the App Store.

Posted on Leave a comment

How to support per-app language settings in your app

When you localize your app, people all over the world can view your content in the language they feel most comfortable reading. And with the latest versions of iOS and macOS, people can have even more control by choosing languages on a per-app basis. For example, someone may set their iPhone’s language to English, but want to use a social media app in Arabic.

Good news: If your project is built with iOS 13 or macOS Catalina and localized into more than one language, you won’t have to add any additional code to your app. Simply build and deploy your app to test.

Here’s how someone might check per-app language switching for a specific app, using AllTrails as an example.

  1. Open the Settings app.
  2. Navigate to AllTrails > Preferred Language > Language.
  3. Change the preferred language to Spanish.
  4. Launch AllTrails from your home screen (or from the App Switcher, if the app is already open).

Once someone has set their preferred languages for an app in Settings, it will then render accordingly in your app.

AllTrails will now render in Spanish, while the rest of the device continues to display the system language.

Restore your state after a change in the language setting

If someone decides mid-activity that they’d like to view your app in a different language, you can make the experience even smoother for them by restoring their previous state when they return. For example, say you’re living abroad and looking for food using a restaurant delivery app. By default, you use English, but might want to switch the app’s language when viewing a certain restaurant’s menu so that you can better understand its native dishes.

If that app supports state restoration, you can exit to the Settings app and return to the restaurant you were viewing — now in the new language. If not, you’ll have to start from the app’s main screen and find that restaurant again.

If your app supports scene-based state restoration, you can implement stateRestorationActivity(for scene) and return an NSUserActivity that encodes the scene state. (And if you still support view controller state restoration, you can enable state restoration on your app delegate.)


Learn more about implementing state restoration >


How to load custom content in the correct language

If you need to load content from other sources, such as a server, you can do so and ensure that you match the app’s language with a few bundle APIs.

Bundle.main.preferredLocalizations.first will get the system’s current language in priority order.

If you need to check against a custom set of available languages (say, from a server or other source), you can do so with a simple modification to the previous API call. First, find out what available languages there are:

let availableLanguages = Server.requestAvailableLanguages()

Then, use the preferredLocalization API with those languages:

Bundle.preferredLocalizations(from: availableLanguages).first.

If it’s not possible to have ongoing communication with the server due to connectivity or other constraints, you can also send the output of Bundle.main.preferredLocalizations.first to the server; that way, it will know which language the app has been launched in and deliver content accordingly.

How to transition away from a custom language selector in your app

With systemwide support for in-app language selectors, you no longer need to provide a way to select languages within your app if you support iOS 13 or macOS Catalina or later. If you currently offer such a UI, you should remove it to avoid customer confusion and potential conflict with the system.

If you’d like to guide people to the system settings for language selection, you can replace your app’s custom UI with a flow that launches directly into the Settings app on iOS.

On iOS, add the following:

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

On macOS, direct people to System Preferences > Language & Region to add a per-language setting for your app.


Resources

Watch “Creating Great Localized Experiences with Xcode 11” >

Learn more about expanding your app to new markets >

Get more resources for localization >

Posted on Leave a comment

Ready your app for a localized launch

Once you’ve localized your app, it’s time to get ready for an international and localized launch. Here’s how you can localize your App Store product page, set international pricing, and adapt your marketing strategy.

Localize your product page

Localize your App Store metadata, such as your app description, keywords, and screenshots, for each of the countries or territories in which you offer your app. You can also translate your app’s name and tailor your keywords to reflect the values of each market so your app might better resonate with the local audience.


Learn more about localizing your App Store information >

Learn more about optimizing your product page >


Learn about international payment methods and pricing

The App Store handles payment processing, so it’s easy to offer your content to users around the world. Users pay for your apps and in-app purchases with credit or debit cards, carrier billing, digital wallets, or App Store and iTunes gift cards, depending on regional availability.

When pricing your apps and in-app purchases, you’ll choose a price tier in App Store Connect that contains prices already adjusted appropriately for the market in each country or region. For auto-renewable subscriptions, you can choose from 200 price points across all available currencies and price tiers to offer appropriate pricing for each location.


Learn more about setting in-app purchase pricing >

Learn more about pricing subscriptions for each territory >


Adapt your marketing strategy

When launching your app in a new market, adapt your marketing strategy to the region to help your audience easily learn about your app and the value it provides. Research which social networks or other channels are most popular with local audiences, as these may vary significantly across markets, and use them to spread the word about your app. Localize any materials you use in your marketing and user acquisition efforts, such as screenshots, banners, and advertisements.

App Store Badges

Use the Download on the App Store badge in your communications as a clear call to action to download your app. Localized badges are available to let your international audience know that your app is tailored for them. Download badges from the App Store Marketing Guidelines.

Search Ads

In addition, you can drive discovery of your app with Apple Search Ads, which lets you promote your app at the top of relevant App Store search results in more than 59 countries and regions. See Search Ads to learn more and read developer success stories.


Resources

Learn more about expanding your app to new markets >

Get more resources for localization >

Posted on Leave a comment

How to localize your app

When you deliver great localization in your app, you can support your customers in their native language and provide a better overall experience. Here’s how you can get started localizing your content quickly and effectively inside Xcode.

Translate your app’s content

Use the Xcode Export For Localization feature to automatically extract all localizable content, including strings referenced from code, stringsdict files, and Interface Builder files, as well as any localized assets. This process shouldn’t require modifications to your source code, making it easy to work on translations in-house or with an external localization service. Be sure to also localize purpose strings for a consistent app experience, and consider localizing your privacy policy so that all users have a clear understanding of how their data may be handled.

Apple Services

Use Apple APIs to automatically present localized buttons, payment sheets, errors, and more for Apple Pay, Apple Wallet, and Sign in with Apple.

Audiovisual Media

You can also provide localized support for audiovisual media in your app using AVKit and AVFoundation. These frameworks provide built-in support for easily presenting subtitles and closed captions, and for selecting alternative audio and video tracks.

Localization Services

If choosing an external localization service to help translate content, find out if they specialize in localizing for particular languages, cultures, or categories, and confirm the levels of quality assurance they provide. Providing the service with context about your app and content can help increase efficiency and minimize translation errors. Consider creating a guide with important details — for example, a playbook with character names and personalities, explanations of jokes or humor, a glossary of frequently used terms, and screenshots that show where the translations will be used. Avoid machine translation as your only translation method, since this can lead to inaccurate and low-quality translation because it does not account for context, cultural sensitivities or language nuances. For example, the “book” button in a hotel app might be incorrectly translated to be “novel” rather than “reserve”.


Learn more about localizing your app in Xcode >


Test your localization

Configure test plans in Xcode to easily run tests with different settings and define your testing variants in one place. This helps flag any instances of clipping, truncation, layout overlapping, or issues with right-to-left formatting for the devices and languages you support.

You can use the Localization Screenshots feature to generate localized screenshots from successful tests and export these screenshots for use in tutorials, marketing materials, or your App Store product page. Once your app is localized, use TestFlight to share your app with a group of users in the market to get feedback and gather opportunities for improvement.


Resources

Watch “Testing in Xcode” >

Learn more about testing your app in Xcode

Learn more about expanding your app to new markets >

Get more resources for localization >

Posted on Leave a comment

How to prepare your app for a global audience

The App Store is available in 175 countries and regions and 40 languages to make it easy for people around the world to discover and download your app. This week, we’re showing you how localizing your app can help make it more relevant to local cultures and languages and help you grow your business — and that starts with preparing your app for a global audience.

Structure your app for localization

Internationalization, the process of structuring your app’s code and UI for localization, is a fundamental first step in building apps for a global audience. With Apple’s powerful tools and technologies, including Xcode 11, Apple APIs, Auto Layout, and Unicode support, it’s easy to prepare your apps to support multiple languages and regions, even before you know which languages you’d like to add.

In Xcode, make sure your user-visible text and images are separate from your executable code. When you translate these elements into other languages, you can integrate the content back into your app as separate localized resource files stored within the app bundle.

Images — including image sets, Apple Watch complications, Apple TV image stacks, Sprite Atlases, and symbol sets — can be localized directly in your Asset Catalog. You can also use localized SF system symbols and set the directionality for custom symbols — for example, for right-to-left languages like Arabic and Hebrew.

Use Apple APIs to correctly express user-visible or dynamically-generated values, such as dates, lengths, weights, prices, and currency symbols, across different locales. Ensure your app accepts user-generated text in any language and in multiple languages at once, independent of the user interface language. This allows app content to appear in someone’s preferred language and format.

You can also take advantage of Auto Layout to automatically adjust the dimensions and layouts of views, extensive Unicode support to work with text from any language, the powerful text handling technologies of Cocoa and Cocoa Touch to display, lay out, and edit text in many languages, and much more.


Watch “Create great localized experiences with Xcode 11” >

Learn more about localizing your app in Xcode >


Investigate market factors

Market-specific demographics, such as population, language, and purchasing power, can help you better understand areas that might have an affinity or need for your app. Every market has its own preferences for the types of apps or categories customers most enjoy. For example, games are popular worldwide, however strategy games may be more popular in a particular region.

Consider selecting markets with similar attributes to those in which you have already established success, such as strong app downloads, sales, usage, or retention metrics, as this may make for easier growth. When selecting a market, assess how your app might fit in and how its value and functionality aligns with that market’s needs. You may even identify a need in the market that is not yet filled, allowing you to bring unique value to people with your app.

Use App Analytics to determine potential markets

If you offer your app worldwide but haven’t localized for particular regions, you can look at key performance metrics, such as Product Page Views, App Units, Sales, and Active Devices, filtered by territory. This can help you determine if your app is attracting people in a particular territory that might benefit from localization. For example, if your app is primarily in English and you see lower than average retention or Sessions per Active Device in Germany, you might consider adding German language support. Keep in mind that some markets may have greater proficiency with your app’s primary language, while others may require more significant localization work. Usage data such as active devices, sessions, and retention include only users who have agreed to share their diagnostics and usage information with you.


Learn more about gaining insights with App Analytics >


Consider local culture and customs

While your app and product page should each provide a consistent experience across all markets, it’s sometimes valuable to refine certain elements for cultural relevance. For example, you might try incorporating market-specific content or cultural moments, such as special holiday content or regional art styles. You may want to consider any local policies and market regulations, as well as any political or religious sensitivities, to increase the likelihood that your app is well received.


Resources

Learn more about expanding your app to new markets >

Get more resources for localization >

Posted on Leave a comment

Apple Search Ads Now Available in Russia

Promote your apps to customers on the App Store in Russia with Apple Search Ads — an efficient and easy way for people to discover your app the very moment they’re searching for apps like yours. If you sign up for a new Apple Search Ads account, you can take advantage of a 100 USD credit to reach customers in 60 countries and regions.

Learn about Search Ads

Posted on Leave a comment

Meet the developer: Philip Lam

The A.I.-powered app has revolutionized basketball practice.

HomeCourt is quite possibly the biggest thing to happen to basketball practice since the invention of the sneaker.

The app uses artificial intelligence (A.I.) and augmented reality (AR) to create and shape on-court basketball drills. It can tell whether you’re shooting off the dribble, catching and shooting, or just practicing free throws. It will measure your release time and the angle of your shot. It knows how fast you’re moving before you shoot. It calculates your vertical leap. And after your workout, you can see performance charts and a video breakdown right away. It’s a metrics fan’s dream.

HomeCourt lets you watch your dribbling skills in real time.

HomeCourt offers real-time coaching as well. With the help of your iPhone or iPad’s front-facing camera, you can get real-time feedback from coaches across town or on the other side of the globe.

As people shelter in place around the world, HomeCourt has made its services free to everyone through May 31. A recent feature update also lets coaches create a virtual team roster in the app, so players, coaches, and parents can participate in remote workouts, drills, and competitions. The company is also working on other ways it can support basketball players and coaches while school activities, practices, and tournaments are being cancelled or postponed.

Cofounder Philip Lam says the company’s shot-tracking prototype kicked everything off. “Even though it could only track shots in a few specific situations,” he says, “it made us believe it was possible to use a single smartphone camera to track complex basketball activities.”

Get instant feedback right on the court.

Today the company has 22 employees in Hong Kong and San Jose, California, and players across the globe.

Here Lam explains how HomeCourt got into the game:

”Before we launched, we played pickup basketball every week, and we started talking about how great it would be if we could get our stats — who hit the most shots, who got the most rebounds, all that stuff. And the idea just came up: Can we actually use the camera on the phone to do that for us? That’s how it started.

We built HomeCourt on mobile to make it affordable to players around the world. We came up with the idea of simulating the Stephen Curry tennis-ball drill with an interactive AR experience. That turned out to be the foundation of HomeCourt’s dribble workout. Everyone on the team was really excited to try it and compete with each other.”

Yes, the app keeps track of this many stats.

”Most other basketball training applications are content-based — no other mobile solution provides this system of proven training techniques combined with real-time A.I.-powered analysis.

In mid-2018, we built a prototype that could track advanced metrics, like release angle, release time, and vertical jump. We named this feature Shot Science. At that time, the iPhone X was the latest iOS device. It was powerful, but it still wasn’t fast enough to run Shot Science in real time and enable players to hear audio shot analysis during a live practice.

The new iPhone series came in September 2018, and it was a much more powerful device for running machine-learning algorithms. We found our algorithm [ran] six times faster in the iPhone series with the A12 Bionic chip. With the optimization in our algorithm, we could finally offer Real-Time Shot Science. The opportunity to demonstrate that at the 2018 Apple iPhone event [was] definitely one of the most special days in our journey so far.”

A sketch of the design that eventually became HomeCourt.

”We’ve had parents tell us that it becomes a competition with videogames: “Oh, they really do practice more, and they play fewer videogames, and I’m really happy about it!” And I’m really happy about it too!

And, yes, we still definitely play every week.”


Originally published on the App Store.

Posted on Leave a comment

Design launch screens for seamless starts

Instantaneous app launches are a big part of providing a great experience on iPhone or iPad. Whether someone is tapping on your app icon for the first time or returning from elsewhere, they should be able to get started immediately. A launch screen lets you provide that seamless and adaptive experience while your app loads any pertinent information in the background, and you can create it directly in Xcode.

Designing the right storyboard for your launch screen can make a world of difference in how quickly you can immerse people into your user interface. Here are a few recommendations and tips to help you create great launch screens for your app.

Support all device screen sizes by creating launch screen storyboards in Xcode

Although people won’t be able to interact with your launch screen, you should always build your screen using an Xcode storyboard. Storyboards are flexible and adaptable and support all device screen sizes, which allows you to use a single storyboard to manage your launch screens for every platform you support.

Note: Don’t use a static image for your launch screen. Static images have been deprecated and all App Store apps must use an Xcode storyboard to provide an app’s launch screen by June 30, 2020. Learn more here.

Mirror your main screen

The fastest way to convince someone your app is responsive and ready to go is to show them the same interface in your launch screen that they expect on your app’s main screen.

When an app first starts up, it shows its launch screen before transitioning to the main interface. When someone switches away, the app automatically saves an App Snapshot of its interface so that it can return to where they left off; if an app can’t restore its state in this way, however, it will display the launch screen instead.

As such, you want to make sure your launch screen storyboard looks close to identical to your main interface. If you include elements that look dramatically different, it may be confusing or jarring when your app shifts to the main screen. If you have an app that might take a bit longer to load, like a game, and you’d like to provide any kind of animated experience during that time, we recommend using a solid color background; from there, the app can move gracefully to the game’s first screen.

Consider the light and the dark

When someone launches your app, you want them to feel immersed — no matter their appearance settings. We’ve already addressed how to create adaptive launch screen storyboards, but it’s also important to think about a device’s appearance. If your app supports Dark Mode, your launch screen storyboard should as well. Make sure that your storyboard uses adaptive colors, and set the background of the view to the System Background Color.

Assess your assets

Anything you add to your launch screen storyboard should be optimized appropriately. If you want to add an asset to your storyboard, such as a static image that normally appears as part of your app’s user interface, make sure that its image dimensions are no larger than the view it’s going to be placed in. Your storyboard may not display if you use assets at larger resolutions.

Launch with a global audience in mind

Unlike your app’s interface, your app’s launch screen can’t be localized into other languages: Any text you display in your storyboard will remain in the original language you select. As such, it’s best to avoid including any text at all.


Resources

Watch “Optimizing app launch”

Learn more about designing with storyboards in the Developer Library

Learn more about launch screens in the Human Interface Guidelines

Learn how to create a Storyboard using Interface Builder

Learn more about responding to app launches in the Developer Library

Learn more about storyboards, scenes, and connections in the Xcode guide

Learn more about supporting Dark Mode in your interface in the Developer Library