Quantcast
Jump to content


Samsung Newsroom

Administrators
  • Posts

    1,079
  • Joined

  • Last visited

    Never

Everything posted by Samsung Newsroom

  1. In this episode of POW, Tony interviews Roger Kibbe, Senior Developer Evangelist for Bixby, Samsung’s intelligent assistant technology. Roger is a tech geek when it comes to voice technology, even launching his own voice startup. Join us as we discuss Roger’s journey to Samsung and the great things around Bixby. Learn how to get started building capsules for Bixby and the magic that drives Viv, the Bixby team at Samsung. Topics Covered: • Intelligent Assistant Technology • Multi-Modality • Bixby Capsules • Bixby Developer Studio • Bixby Marketplace • Bixby Developers Chat Podcast • Adam Cheyer • Viv Labs View the full blog at its source
  2. This video is a clip of a 2 hour Tizen workshop that we conducted online. The focus of this video is to give you a general idea of the different options you have when it comes to developing applications with Tizen. You can find the full workshop here: https://youtu.be/5xp8jFpXOm8 You can also connect with me, Diego, a Sr. Developer Evangelist, on Twitter: https://twitter.com/hielo777 Check out other videos, blog posts, and tips to improve your Tizen app development. Check the Tizen Tidbits playlist on our YouTube channel and learn more about the wide selection of Samsung technologies on our developer portal. View the full blog at its source
  3. Start Date May 15, 2020 Location Online WebXR is a group of standards which are used together to support rendering 3D scenes to hardware designed for presenting virtual worlds (virtual reality or VR) or for adding graphical imagery to the real world, (augmented reality or AR). Curious about making a VR scene with Three.js, using VR Controllers, or moving around a VR scene? During this office hours Ada Rose Cannon from the Samsung Internet team will be answering all your questions! You can check her latest article about VR locomotion here: https://medium.com/samsung-internet-dev/vr-locomotion-740dafa85914 Agenda: 16:00 GMT+1 Welcome 16:15 GMT+1 Discussion around Web XR 16:45 GMT+1 Closing Remarks, Q&A View the full blog at its source
  4. Start Date May 14, 2020 Location Online Join this live video chat with Samsung Evangelist Tony Morelan to discuss techniques and strategies related to marketing your apps, building your brand, and selling on the Galaxy Store. Receive live support from a pro! View the full blog at its source
  5. Marketing and monetization are a key part to every developer’s journey. We're created a set of resources to help you succeed when it’s time to start promoting your new apps, games, themes, and watch faces. The blog posts, articles and guides, videos, and downloadable content provide easy-to-follow instructions and access to powerful promotional tools that aid you in achieving your desired goals. Get tips for executing social promotions, managing your brand on the seller portal, and using Galaxy Store badges. View the full blog at its source
  6. Nanobit is an award-winning game publisher headquartered in Zagreb, Croatia with a branch office in Budapest, Hungary. They are developers of popular game titles including My Story, Tabou, and Hollywood Story. Nanobit’s games allow their users to escape from the ordinary into non-reality, which is more popular now than ever. Filip Cindrić, Head of Business Development for Nanobit, shares how to develop a successful game, what models are used to make money in the gaming business, and emphasizes the opportunity for game developers in our current global climate. Who and what is Nanobit? Nanobit is a global gaming studio started by two entrepreneurs in 2008. Today the team consists of more than 120 experts of various backgrounds, all dedicated to one goal - the development of high-quality, super-fun, mobile games! We specialize in mobile casual games, with over 10 million happy gamers who play our games monthly. Both our games and apps have been downloaded over 130 million times. We have been recognized by the likes of EY Entrepreneur of the Year 2014, Deloitte’s Technology Fast 50 Central Europe 2014, 2015, multiple times on Deloitte’s Technology Fast 500 EMEA, and FT 1000: Europe’s Fastest Growing Companies. There are many indie game developers working on the next big game title. You have a very similar story. Can you share your journey? Nanobit was founded by two young entrepreneurs, Alan and Zoran, in Zagreb, Croatia. These two programmers who were completely self-taught. They started the company with 1 iPhone and developed one of the first lifestyle apps for calorie tracking, Tap & Track. This soon paved the way for more apps, and games followed as they were determined to bring more fun into the world. Today, Nanobit is a world renowned publisher for lifestyle, narrative, and fashion games, with hits such as Hollywood Story, the winner of Samsung’s Best of Galaxy Store Awards 2019 for “Best Choose Your Own Adventure Game”, and My Story. Little did Alan and Zoran know how successful they would be, which makes Nanobit’s journey even more exciting and admirable. You specialize in mobile casual games which have amassed over 100 million downloads. What is the basic structure for developing a successful game? There is no secret formula on how to develop a successful game. Basically, the first step is to do proper research of the industry and see if your idea is of interest to the potential users. Secondly, you need to have an excellent team of people, including great artists, developers, producers, game testers, and many others. Once you publish your game, you need to stay in touch with your users and listen to their needs and wants. That is the basic structure, but as we said, there is no secret formula! Is there a preferred language for game developers? The preferred programming language of game developers used to be C/C++, and to some extent, it still is. However, with the rise of quality and accessibility of cross-platform frameworks and game engines, the language used tends to be whatever your engine of choice supports. That being said, C/C++ is basically the only natively supported cross-platform language and is still unmatched when it comes to getting every last bit of performance from your game. Hollywood Story is a game full of unique, fun characters. What systems do you use to create game concepts and story characters? We brainstorm a lot! There are lots of discussions every day on how to spice up the virtual lives of our users. Each novelty, whether it is a game concept, or a new character in the existing game, is discussed by various team members. We need to make sure that our next step is the right one to introduce to our players. We also want to increase the variety of our characters, so regardless of your position within the team (be it developers, artists or analysts), every input is very valuable! What are some of the challenges you face while developing your games? It is definitely a super-competitive market, where there are many great producers and where consumers are becoming more and more demanding. User acquisition is becoming challenging as well. Speaking of internal challenges, sometimes there are too many good ideas at the same time, which makes it difficult for us to decide what idea to implement first. Fortunately for us, it seems that we made good decisions so far. Are there common errors made by developers while programming games? Most common errors tend to be general beginner's mistakes that are often related to a framework or a language used. However, one thing specifically related to game programming are the errors caused by the fact that the changes in the game scene often don't take effect until the "next frame" i.e. the next iteration in the core loop. What are the models used to make money in the gaming business? Things have certainly changed over the years for video games and monetization models fueling its growth. The evolution has taken games from the premium model only, in which users had to commit spending even before making a download, to a more accessible free to play model that has made games widely available for anyone with a proper device. Nowadays, free to play model is definitely a dominant one on mobile devices and that is where we at Nanobit found our success as well. The majority of Nanobit’s revenue is generated through micro-transactions, also well known as in-app purchases (IAP), where the user is making a purchase of low value and is being delighted with premium in-game currency, special outfits, etc. Apart from this, ad monetization has seen tremendous growth over the years, and developers have become ever so sophisticated in finding ways to earn more while also enhancing user experience. The most popular ad format today is rewarded video, which gives in-game rewards to players in exchange for their time, however formats such as interstitial ads, banners, offer wall, and native ads also follow. And then, of course, there are games that, due to their immense popularity and scale, are able to sign bespoke deals with consumer or other brands and secure extra income through custom advertising, brand partnership, or affiliate deals. How do you stay up to date with the latest game and software trends? We are continuously researching current trends in technology and gaming industry and are always re-evaluating our development strategy in that regard. What advice do you have for indie developers and designers attempting to develop a successful game business? We would definitely advise them to focus on the idea and to create something unique and fun, rather than focusing on the monetization model and how to make the game (super) profitable. If you make something unique and creative, success will follow. The current global climate has resulted in an increase in gameplay, and a spike in game downloads and sales. Is this an especially unique opportunity for game developers? The times we are living in are definitely uncertain, and there is no doubt that this global pandemic has negatively influenced many businesses worldwide. However, this really is a unique opportunity for game developers. Many people worldwide are at home and have more time than usual, so game developers should use this opportunity to gain as many new users as possible. With all of your current success, what’s next for Nanobit and Hollywood Story? We are working on exciting updates for the current top titles and have new projects in pipeline in the narrative and lifestyle genre. We want to thank Filip for talking with us about Nanobit’s journey from game entrepreneurs to their success as an award winning game publisher, and for sharing the importance of staying in touch with your users. If you want to check out one of Nanobit’s award winning games, and escape from the ordinary into non-reality, you can download Hollywood Story on the Galaxy Store from your Samsung device. Follow us on Twitter at @samsung_dev for more developer interviews as well as tips for building games, apps, and more for the Galaxy Store. Find out more about our Best of Galaxy Store Awards. View the full blog at its source
  7. Start Date May 06, 2020 Location MGM Grand, Las Vegas, NV Conference has been postponed until further notice Meet up with Samsung at the leading mobile acquisition and retention summit. Don't miss our panel session in the Monetization track! Check out everything the conference has to offer. View the full blog at its source
  8. We're excited to announce the launch of the Samsung Developers podcast: POW! Hosted by Senior Developer Evangelist Tony Morelan, Podcasts of Wisdom (POW!) is where we engage, educate, and inspire designers and developers to succeed with Samsung. Hear from Samsung developers talking about the latest tech and new trends. Get insight into all of the opportunities available for Android developers looking to develop for Samsung. Learn about all of the fascinating things our developer community is building for its users. The first three episodes are waiting for you on your favorite podcast player. Hear from Jong Woo, head of Game Services for Samsung Electronics America Dan Appelquist, head of Developer Advocacy for Samsung Internet Tony Morelan, your host There are many more guests, including external developers, partners, and industry experts to come in the next few months. It's time to put on music, it's time to light the lights. It's time to get things started on the Samsung show tonight! View the full blog at its source
  9. Start Date May 04, 2020 Location Hynes Convention Center, Boston, MA Event has been postponed until later in 2020 Stop by the Samsung Developer booth at HOW Design Live and learn how to create watch faces and themes that will wow consumers. Participate in a design challenge for a chance to win a device! View the full blog at its source
  10. These days, distributing digital content is very popular. If you are creative and like to design, then entering into the watch face market would be perfect for you. Galaxy Watch Studio (GWS) has a feature, called trial periods, that lets a user try out your watch face before buying it. A trial period is the time when a customer can try a paid product without paying money. Samsung In-App Purchase (IAP) is used to configure this feature. A trial period can be set from 1 minute to 999 days. As a seller, a key metric is to measure and maximize the conversion from free trial period to purchase. However, the most common business model for app purchases for Galaxy Watch in 2019 was the paid app model—without a trial period. In the majority of cases, the consumer assesses the paid app based on the screenshots and consumer reviews in Galaxy Store, buys it, and then sees the app on the watch. The try-and-buy model allows the user to test the app risk-free on the watch for a trial period before buying it. A watch face can be free or paid. If it’s your first attempt to upload a watch face in Galaxy Store, then start with a free watch face. The publication process is fairly easy, and you can become a free seller by registering in Seller Portal. After registering, you have to become an approved seller in order to publish watch faces. To become an approved seller, submit a watch face for design review. If you want to publish a paid watch face in Galaxy Store, then you have to be a commercial seller. Read Commercial Seller Request Guide for details. Free Watch Face Create a new project using GWS. After developing the watch face, upload it to Seller Portal. Read the Build and Upload article to learn about this. You can get a clear view about registering an application in the Seller Portal from the Application Registration Guide. Paid Watch Face A trial period becomes relevant when publishing a paid watch face. Integrating this service is easy in GWS. A user may not want to buy a watch face based on just seeing some screenshots. He/she might be convinced to buy that watch face after using it for a while. A trial period lets a user do this. Before distributing the watch face for sale in Galaxy Store with a trial period, you have to change the IAP settings in GWS. IAP Settings in Galaxy Watch Studio Go to GWS > Project > In App Purchase Settings or click on the In-App Purchase Settings icon from the toolbar. Check ‘Enable In-App Purchase’ Choose one of the trial options. Set the duration of the trial period (at least 1 min). Write an Item ID using English letters, numbers, and certain special characters (. - _). Note: Use this Item ID for when registering your watch face. If you write the wrong Item ID while registering your watch face in Galaxy Store Seller Portal, the trial period won’t work in your watch face. Now, click OK. Select the IAP Test Mode from Project > Build > IAP Test Mode. There are three types of modes in IAP: Commercial: Real transaction happens in this mode. Success Test: This mode is for testing the IAP for successful purchase. No real transaction occurs in this mode. Failure Test: This is for failure testing. You can check what happens when a user fails to purchase the watch face. Note: To test the trial period, you have to register your watch face in Seller Portal first. Then, you can test the trial period on your device. Upload the Watch Face If you want to test your trial period, follow the steps below: Open the project in GWS. Go to Build. Set the IAP Test Mode as ‘Success Test’ while building the watch face. After building the project, go to Seller Portal or click on the ‘Upload’ button in GWS and log in. Follow the steps which are described in the Build and Upload section for uploading your watch face to Seller Portal. If you forget to enter information in the In-App Purchase section, then the trial period won’t work in your watch face. So be mindful about it. If your watch face is paid and it has a trial period, you have to set the price in the In-App Purchase section. Go to the Country/Region & Price section and set the price as ‘Free’. Otherwise, customers might have to pay money for both the trial version and after the trial version has expired. When you upload the binary of your watch face, your watch face will be registered. Do not submit your watch face, just save it. After registering, you can test the trial period of your watch face. Refer to "Test the trial period" in Trial Periods. When you are ready to sell your watch face, do the following steps: In GWS, go to Build. Set the IAP Test Mode as ‘Commercial’ and then build the project. After building the project, go to Seller Portal or click on the ‘Upload’ button and log in. If you have uploaded your watch face for testing already then find your Application and click on ‘Registering’. Delete the binary from ‘Binary’ section and upload the new one. Tip: You can mention that your watch face is "Try and Buy" in the Description box in the App Information section. This may create interest to download your watch face and use the trial version. If everything is done, click ‘submit’ to upload your watch face for validation and publication. It may take 2 - 3 weeks to publish your watch face in Galaxy Store. You can check the status of your watch face from Seller Portal in the Application Status tab. You can check the sale status of your watch face from Home > Statistics. For more information about trial periods, see the related article on the Samsung Developers site. If you have any questions, visit the GWS forum. View the full blog at its source
  11. Localization is the process of translating an application’s resources into multiple languages. In my previous post, Managing Strings for Localization in Tizen .NET Applications, I explained how to manage strings for localization. I strongly recommend you to read it before you get started. This post explains how to localize images in a Tizen .NET application. You can obtain the sample application used in this post here. Add image files Devices have a range of screen sizes and pixel densities, so you may need to display density-dependent images. Resx files can store binary data such as images, but does not meet this need. Therefore, the localization functionality provided by Tizen should be used. Add localized images On Tizen, localized images are stored using a naming convention for folders in the res/contents directory. Folders are named LANGUAGE_REGION-DPI. For example, the folder for the American English language supporting all DPI is named en_US-All. Visual Studio Tools for Tizen provides the Resource Manager tool to create folders for each language you want to support. Using this tool is recommended for convenience and prevention of mistakes. Select Tools > Tizen > Resource Manager in the Visual Studio menu bar and select the Configuration tab In the Resource Manager window. In the Configuration tab, select the Language and DPI you want to support then click Add. The resource folders are created automatically in the res/contents directory. Add localized images into each folder for each language. Add the default images If your app runs in a language for which it does not provide localized images, Tizen displays images from the res/contents directory instead. Therefore, you should add the images for the default language into the res/contents directory. rex.xml is created automatically after building your app, which is used internally when finding a localized image. You should not edit this file because it is updated automatically. Display a localized image You can get the path of a localized image using the Tizen.Applications.ResourceManager class. Using this class, you can update the source of image whenever the language setting of the device is changed. <ContentPage x:Class="LocalizationSample.Views.CenterLayoutPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:ext="clr-namespace:LocalizationSample.Extensions" xmlns:viewModels="clr-namespace:LocalizationSample.ViewModels"> <ContentPage.BindingContext> <viewModels:CenterLayoutViewModel/> </ContentPage.BindingContext> <ContentPage.Content> <StackLayout Margin="0, 40, 0, 30" VerticalOptions="FillAndExpand"> <Image Source="Flag.png" /> <Label Text="{ext:Localizing CountryName}" HorizontalOptions="CenterAndExpand" /> </StackLayout> </ContentPage.Content> </ContentPage> In XAML, the localized version of an image is displayed if your app has the localized image and sets the image name as the source of the image. Internally, the localized image is set using Tizen.Applications.ResourceManager. But that image is not changed on-the-fly when the language setting of a device is changed while your app is running. The XAML markup extension LocalizingExtension, introduced in my previous post, can be a good solution to meet this requirement. This extension enables text to be localized when an application is started and when the language setting is changed. Because the image name Flag.png is not found in any Resx resource file, the image name is returned and the localized image is set internally. Then the image can be displayed as we want. <ContentPage x:Class="LocalizationSample.Views.CenterLayoutPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:ext="clr-namespace:LocalizationSample.Extensions" xmlns:viewModels="clr-namespace:LocalizationSample.ViewModels"> <ContentPage.BindingContext> <viewModels:CenterLayoutViewModel/> </ContentPage.BindingContext> <ContentPage.Content> <StackLayout Margin="0, 40, 0, 30" VerticalOptions="FillAndExpand"> <Image Source="{ext:Localizing Flag.png}" /> <Label Text="{ext:Localizing CountryName}" HorizontalOptions="CenterAndExpand" /> </StackLayout> </ContentPage.Content> </ContentPage> Sample application demo You can see that the text (CountryName) and the image (Flag.png) on the display is changed when the language setting is changed. Alternative solution So far, I have explained how to manage images using the Tizen localization functionality. But there is a weakness in this functionality. The name of the folder for localized images can’t use only the language code without a country code, such as es-All. That is, you need to create folders for each Spanish-speaking country such as es_ES-All, es_MK-All, and so on. Alternatively, you can use Resx resource files and LocalizingExtension. Add an image to the res/contents/es-All folder and create a Name/Value pair in the AppResources.es.resx file that consists of the image name and the location of the image using the relative path from the res directory. Then, LocalizingExtension enables res/contents/es-All/Flag.png to be displayed when your app runs in any Spanish language setting. But there is a weakness in this mechanism too: a density-dependent image is not selected automatically. Therefore, your app needs to determine which density-dependent image to display. Make your application global To learn more about developing a world-ready application, see the Globalizing and localizing .NET applications guide. In addition, please do not hesitate to visit Tizen .NET Portal and create an issue if you have any questions. View the full blog at its source
  12. Start Date Apr 28, 2020 Location Online Join the Samsung Knox team for a webinar on how to get your Enterprise Mobility Management (EMM) solution endorsement from Samsung. We will give an overview of the features and benefits of the new Knox Validated Program. You can learn more about Knox here. This webinar is at 8am PT on Tuesday, April 28th. There is a corresponding webinar in a timezone friendly for developers in APAC. View the full blog at its source
  13. Start Date Apr 28, 2020 Location Online Join the Samsung Knox team for a webinar on how to get your Enterprise Mobility Management (EMM) solution endorsement from Samsung. We will give an overview of the features and benefits of the new Knox Validated Program. You can learn more about Knox here. This webinar is at 8am PT on Tuesday, April 28th. There is a corresponding webinar in a timezone friendly for developers in APAC. View the full blog at its source
  14. Start Date Apr 28, 2020 Join the Samsung Knox team for a webinar on how to get your Enterprise Mobility Management (EMM) solution endorsement from Samsung. We will give an overview of the features and benefits of the new Knox Validated Program. You can learn more about Knox here. This webinar is at 2pm KST on Tuesday, April 28th. There is a corresponding webinar in a timezone friendly for developers in North America. View the full blog at its source
  15. Start Date Apr 28, 2020 Join the Samsung Knox team for a webinar on how to get your Enterprise Mobility Management (EMM) solution endorsement from Samsung. We will give an overview of the features and benefits of the new Knox Validated Program. You can learn more about Knox here. This webinar is at 2pm KST on Tuesday, April 28th. There is a corresponding webinar in a timezone friendly for developers in North America. View the full blog at its source
  16. A major update for VR and the web Hi! I’m Ada Rose Cannon. As well as being a Developer Advocate for the web browser, Samsung Internet, I am a co-chair of the W3C Immersive Web Working Group and Community Group. These two groups work together to produce the WebXR Device API and related specifications. As you can imagine, getting WebXR support in Samsung Internet is pretty close to my heart. I am pleased to say that since Samsung Internet 11.2, we have initial support for WebXR in our browser. You can view the full support table here. WebXR is a very large API with many modules still being worked out. The core module which is in a stable state is for supporting VR. You maybe thinking that VR in the web is old news. At Samsung, we have supported the WebVR API for years. The WebVR device API is now being deprecated since it had some core issues preventing it from being future proof. WebXR is being designed to replace WebVR and reach further to support many features WebVR was unable to such as Augmented Reality and better support for gamepads. If you have been supporting a website or JavaScript library designed around WebVR, now is the to migrate it to WebXR to ensure it isn’t broken in the near future. Our current support for WebXR is to use the Android VR system to render the experience side by side in the browser so it can be used with cardboard VR devices. WebXR on Android (Link to Demo) Looking to the future for Samsung Internet, we are working on supporting the AR portions of the WebXR device API so you can build websites which place virtual objects into the user’s environment. For more news about WebXR on Samsung Internet please follow us on Twitter (@SamsungInternet) or keep an eye on https://immersiveweb.dev. View the full blog at its source
  17. Localization is the process of adapting an application to a specific country or region. To do this, an application should translate an application’s resources, such as text and images, into multiple languages and formats. Then, the application shows localized resources based on the settings of the device. This post explains how to localize text in Tizen .NET application. I strongly recommend you to read Xamarin.Forms String and Image Localization before you get started. You can obtain the sample application used in this post here. Create resource files The .NET framework provides a way for localizing an application using Resx resource files. Each file contains a list of items that consist of a name/value pair and an application can retrieve a specific resource by name. By using this mechanism, you can store and retrieve localized texts. Create a default resource file. Using Add New Item dialog, add a default resource file. The file name of the default resource doesn’t contain any language information. In the sample application, the default resource file AppResources.resx is added to the Resources folder. Set the Access Modifier to Public, which results in a file with the .designer.cs extension being added to the project. Then, add items which contain the following information: Name : The key used to retrieve the text Value : The localized text Comment : Additional information (optional) Add additional resource files. Create additional resource files for each language you want to support. The file name of each resource should include the language information, such as AppResources.ko-KR.resx. In these resource files, set the Access Modifier to No code gen. The file name of resource can include just the language code, without a country code, such as AppResource.es.resx. If the language of the device is es-ES, the application looks for resource files in this order: AppResources.es-ES.resx AppResources.es.resx AppResources.resx (default) Specify the default language Specify a default language using NeutralResourcesLanguage to inform the resource manager of the app’s default language. This improves lookup performance for the first resource that is loaded. In the sample application, en (English) is set by NeutralResourcesLanguage in Main.cs. For more information about NeutralResourcesLanguage, see NeutralResourcesLanguage Attribute Class. using System.Resources; [assembly: NeutralResourcesLanguage("en")] Localize texts The language setting of a device can be changed when your application is running. To adapt your application to the new language, text needs to be translated on the fly. XAML markup extensions is a good solution to meet this requirement and this is where we will start with my own LocalizingExtension class. [ContentProperty("Name")] public class LocalizingExtension : IMarkupExtension<BindingBase> { private static readonly IValueConverter _converter = new LocalizedResourceConverter(); public string Name { get; set; } public BindingBase ProvideValue(IServiceProvider serviceProvider) { return new Binding(nameof(LocalizationService.UICulture), BindingMode.OneWay, converter: _converter, converterParameter: Name, source: LocalizationService.Instance); } object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) { return (this as IMarkupExtension<BindingBase>).ProvideValue(serviceProvider); } } This extension enables a text to be localized when an application is started and the language setting is changed. This extension has a single property Name of type string that you set to the name of the text to be localized. This Name property is the content property, so Name= is not required when using it in XAML. I also made a LocalizationService class which provides information about the current language and notifies clients that the language setting has changed. You can see the code here. In addition, the LocalizationService class provides a method to get localized text. This function uses ResourceManager defined in AppResources.Designer.cs. /// <summary> /// Get the value of localized resource. /// </summary> /// <param name="resourceName">Resource name</param> /// <returns> /// The value of localized resource. /// If resourceName is not defined as a name in any resource file, then resourceName is returned as the value of the resource. /// </returns> public string GetResource(string resourceName) { return AppResources.ResourceManager.GetString(resourceName, UICulture) ?? resourceName; } By using this method, the LocalizedResourceConverter class converts text to the localized text. public class LocalizedResourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return LocalizationService.Instance.GetResource(parameter as string); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } Accessing the value of text by LocalizingExtension enables localized text to be displayed even if the language setting of device has been changed. <ContentPage x:Class="LocalizationSample.Views.CenterLayoutPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:ext="clr-namespace:LocalizationSample.Extensions" xmlns:viewModels="clr-namespace:LocalizationSample.ViewModels"> <ContentPage.BindingContext> <viewModels:CenterLayoutViewModel/> </ContentPage.BindingContext> <ContentPage.Content> <StackLayout Margin="0, 40, 0, 30" VerticalOptions="CenterAndExpand"> <Label Text="{ext:Localizing CountryName}" HorizontalOptions="CenterAndExpand"/> </StackLayout> </ContentPage.Content> </ContentPage> Sample application demo You can see that the text (CountryName) in the application is changed to the localized text when the language setting is changed. View the full blog at its source
  18. Localization is the process of adapting an application to a specific country or region. To do this, an application should translate an application’s resources, such as text and images, into multiple languages and formats. Then, the application shows localized resources based on the settings of the device. This post explains how to localize text in Tizen .NET application. I strongly recommend you to read Xamarin.Forms String and Image Localization before you get started. You can obtain the sample application used in this post here. Create resource files The .NET framework provides a way for localizing an application using Resx resource files. Each file contains a list of items that consist of a name/value pair and an application can retrieve a specific resource by name. By using this mechanism, you can store and retrieve localized texts. Create a default resource file. Using Add New Item dialog, add a default resource file. The file name of the default resource doesn’t contain any language information. In the sample application, the default resource file AppResources.resx is added to the Resources folder. Set the Access Modifier to Public, which results in a file with the .designer.cs extension being added to the project. Then, add items which contain the following information: Name : The key used to retrieve the text Value : The localized text Comment : Additional information (optional) Add additional resource files. Create additional resource files for each language you want to support. The file name of each resource should include the language information, such as AppResources.ko-KR.resx. In these resource files, set the Access Modifier to No code gen. The file name of resource can include just the language code, without a country code, such as AppResource.es.resx. If the language of the device is es-ES, the application looks for resource files in this order: AppResources.es-ES.resx AppResources.es.resx AppResources.resx (default) Specify the default language Specify a default language using NeutralResourcesLanguage to inform the resource manager of the app’s default language. This improves lookup performance for the first resource that is loaded. In the sample application, en (English) is set by NeutralResourcesLanguage in Main.cs. For more information about NeutralResourcesLanguage, see NeutralResourcesLanguage Attribute Class. using System.Resources; [assembly: NeutralResourcesLanguage("en")] Localize texts The language setting of a device can be changed when your application is running. To adapt your application to the new language, text needs to be translated on the fly. XAML markup extensions is a good solution to meet this requirement and this is where we will start with my own LocalizingExtension class. [ContentProperty("Name")] public class LocalizingExtension : IMarkupExtension<BindingBase> { private static readonly IValueConverter _converter = new LocalizedResourceConverter(); public string Name { get; set; } public BindingBase ProvideValue(IServiceProvider serviceProvider) { return new Binding(nameof(LocalizationService.UICulture), BindingMode.OneWay, converter: _converter, converterParameter: Name, source: LocalizationService.Instance); } object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) { return (this as IMarkupExtension<BindingBase>).ProvideValue(serviceProvider); } } This extension enables a text to be localized when an application is started and the language setting is changed. This extension has a single property Name of type string that you set to the name of the text to be localized. This Name property is the content property, so Name= is not required when using it in XAML. I also made a LocalizationService class which provides information about the current language and notifies clients that the language setting has changed. You can see the code here. In addition, the LocalizationService class provides a method to get localized text. This function uses ResourceManager defined in AppResources.Designer.cs. /// <summary> /// Get the value of localized resource. /// </summary> /// <param name="resourceName">Resource name</param> /// <returns> /// The value of localized resource. /// If resourceName is not defined as a name in any resource file, then resourceName is returned as the value of the resource. /// </returns> public string GetResource(string resourceName) { return AppResources.ResourceManager.GetString(resourceName, UICulture) ?? resourceName; } By using this method, the LocalizedResourceConverter class converts text to the localized text. public class LocalizedResourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return LocalizationService.Instance.GetResource(parameter as string); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } Accessing the value of text by LocalizingExtension enables localized text to be displayed even if the language setting of device has been changed. <ContentPage x:Class="LocalizationSample.Views.CenterLayoutPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:ext="clr-namespace:LocalizationSample.Extensions" xmlns:viewModels="clr-namespace:LocalizationSample.ViewModels"> <ContentPage.BindingContext> <viewModels:CenterLayoutViewModel/> </ContentPage.BindingContext> <ContentPage.Content> <StackLayout Margin="0, 40, 0, 30" VerticalOptions="CenterAndExpand"> <Label Text="{ext:Localizing CountryName}" HorizontalOptions="CenterAndExpand"/> </StackLayout> </ContentPage.Content> </ContentPage> Sample application demo You can see that the text (CountryName) in the application is changed to the localized text when the language setting is changed. View the full blog at its source
  19. Localization is the process of adapting an application to a specific country or region. To do this, an application should translate an application’s resources, such as text and images, into multiple languages and formats. Then, the application shows localized resources based on the settings of the device. This post explains how to localize text in Tizen .NET application. I strongly recommend you to read Xamarin.Forms String and Image Localization before you get started. You can obtain the sample application used in this post here. Create resource files The .NET framework provides a way for localizing an application using Resx resource files. Each file contains a list of items that consist of a name/value pair and an application can retrieve a specific resource by name. By using this mechanism, you can store and retrieve localized texts. Create a default resource file. Using Add New Item dialog, add a default resource file. The file name of the default resource doesn’t contain any language information. In the sample application, the default resource file AppResources.resx is added to the Resources folder. Set the Access Modifier to Public, which results in a file with the .designer.cs extension being added to the project. Then, add items which contain the following information: Name : The key used to retrieve the text Value : The localized text Comment : Additional information (optional) Add additional resource files. Create additional resource files for each language you want to support. The file name of each resource should include the language information, such as AppResources.ko-KR.resx. In these resource files, set the Access Modifier to No code gen. The file name of resource can include just the language code, without a country code, such as AppResource.es.resx. If the language of the device is es-ES, the application looks for resource files in this order: AppResources.es-ES.resx AppResources.es.resx AppResources.resx (default) Specify the default language Specify a default language using NeutralResourcesLanguage to inform the resource manager of the app’s default language. This improves lookup performance for the first resource that is loaded. In the sample application, en (English) is set by NeutralResourcesLanguage in Main.cs. For more information about NeutralResourcesLanguage, see NeutralResourcesLanguage Attribute Class. using System.Resources; [assembly: NeutralResourcesLanguage("en")] Localize texts The language setting of a device can be changed when your application is running. To adapt your application to the new language, text needs to be translated on the fly. XAML markup extensions is a good solution to meet this requirement and this is where we will start with my own LocalizingExtension class. [ContentProperty("Name")] public class LocalizingExtension : IMarkupExtension<BindingBase> { private static readonly IValueConverter _converter = new LocalizedResourceConverter(); public string Name { get; set; } public BindingBase ProvideValue(IServiceProvider serviceProvider) { return new Binding(nameof(LocalizationService.UICulture), BindingMode.OneWay, converter: _converter, converterParameter: Name, source: LocalizationService.Instance); } object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) { return (this as IMarkupExtension<BindingBase>).ProvideValue(serviceProvider); } } This extension enables a text to be localized when an application is started and the language setting is changed. This extension has a single property Name of type string that you set to the name of the text to be localized. This Name property is the content property, so Name= is not required when using it in XAML. I also made a LocalizationService class which provides information about the current language and notifies clients that the language setting has changed. You can see the code here. In addition, the LocalizationService class provides a method to get localized text. This function uses ResourceManager defined in AppResources.Designer.cs. /// <summary> /// Get the value of localized resource. /// </summary> /// <param name="resourceName">Resource name</param> /// <returns> /// The value of localized resource. /// If resourceName is not defined as a name in any resource file, then resourceName is returned as the value of the resource. /// </returns> public string GetResource(string resourceName) { return AppResources.ResourceManager.GetString(resourceName, UICulture) ?? resourceName; } By using this method, the LocalizedResourceConverter class converts text to the localized text. public class LocalizedResourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return LocalizationService.Instance.GetResource(parameter as string); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } Accessing the value of text by LocalizingExtension enables localized text to be displayed even if the language setting of device has been changed. <ContentPage x:Class="LocalizationSample.Views.CenterLayoutPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:ext="clr-namespace:LocalizationSample.Extensions" xmlns:viewModels="clr-namespace:LocalizationSample.ViewModels"> <ContentPage.BindingContext> <viewModels:CenterLayoutViewModel/> </ContentPage.BindingContext> <ContentPage.Content> <StackLayout Margin="0, 40, 0, 30" VerticalOptions="CenterAndExpand"> <Label Text="{ext:Localizing CountryName}" HorizontalOptions="CenterAndExpand"/> </StackLayout> </ContentPage.Content> </ContentPage> Sample application demo You can see that the text (CountryName) in the application is changed to the localized text when the language setting is changed. View the full blog at its source
  20. Localization is the process of adapting an application to a specific country or region. To do this, an application should translate an application’s resources, such as text and images, into multiple languages and formats. Then, the application shows localized resources based on the settings of the device. This post explains how to localize text in Tizen .NET application. I strongly recommend you to read Xamarin.Forms String and Image Localization before you get started. You can obtain the sample application used in this post here. Create resource files The .NET framework provides a way for localizing an application using Resx resource files. Each file contains a list of items that consist of a name/value pair and an application can retrieve a specific resource by name. By using this mechanism, you can store and retrieve localized texts. Create a default resource file. Using Add New Item dialog, add a default resource file. The file name of the default resource doesn’t contain any language information. In the sample application, the default resource file AppResources.resx is added to the Resources folder. Set the Access Modifier to Public, which results in a file with the .designer.cs extension being added to the project. Then, add items which contain the following information: Name : The key used to retrieve the text Value : The localized text Comment : Additional information (optional) Add additional resource files. Create additional resource files for each language you want to support. The file name of each resource should include the language information, such as AppResources.ko-KR.resx. In these resource files, set the Access Modifier to No code gen. The file name of resource can include just the language code, without a country code, such as AppResource.es.resx. If the language of the device is es-ES, the application looks for resource files in this order: AppResources.es-ES.resx AppResources.es.resx AppResources.resx (default) Specify the default language Specify a default language using NeutralResourcesLanguage to inform the resource manager of the app’s default language. This improves lookup performance for the first resource that is loaded. In the sample application, en (English) is set by NeutralResourcesLanguage in Main.cs. For more information about NeutralResourcesLanguage, see NeutralResourcesLanguage Attribute Class. using System.Resources; [assembly: NeutralResourcesLanguage("en")] Localize texts The language setting of a device can be changed when your application is running. To adapt your application to the new language, text needs to be translated on the fly. XAML markup extensions is a good solution to meet this requirement and this is where we will start with my own LocalizingExtension class. [ContentProperty("Name")] public class LocalizingExtension : IMarkupExtension<BindingBase> { private static readonly IValueConverter _converter = new LocalizedResourceConverter(); public string Name { get; set; } public BindingBase ProvideValue(IServiceProvider serviceProvider) { return new Binding(nameof(LocalizationService.UICulture), BindingMode.OneWay, converter: _converter, converterParameter: Name, source: LocalizationService.Instance); } object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) { return (this as IMarkupExtension<BindingBase>).ProvideValue(serviceProvider); } } This extension enables a text to be localized when an application is started and the language setting is changed. This extension has a single property Name of type string that you set to the name of the text to be localized. This Name property is the content property, so Name= is not required when using it in XAML. I also made a LocalizationService class which provides information about the current language and notifies clients that the language setting has changed. You can see the code here. In addition, the LocalizationService class provides a method to get localized text. This function uses ResourceManager defined in AppResources.Designer.cs. /// <summary> /// Get the value of localized resource. /// </summary> /// <param name="resourceName">Resource name</param> /// <returns> /// The value of localized resource. /// If resourceName is not defined as a name in any resource file, then resourceName is returned as the value of the resource. /// </returns> public string GetResource(string resourceName) { return AppResources.ResourceManager.GetString(resourceName, UICulture) ?? resourceName; } By using this method, the LocalizedResourceConverter class converts text to the localized text. public class LocalizedResourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return LocalizationService.Instance.GetResource(parameter as string); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } Accessing the value of text by LocalizingExtension enables localized text to be displayed even if the language setting of device has been changed. <ContentPage x:Class="LocalizationSample.Views.CenterLayoutPage" xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:ext="clr-namespace:LocalizationSample.Extensions" xmlns:viewModels="clr-namespace:LocalizationSample.ViewModels"> <ContentPage.BindingContext> <viewModels:CenterLayoutViewModel/> </ContentPage.BindingContext> <ContentPage.Content> <StackLayout Margin="0, 40, 0, 30" VerticalOptions="CenterAndExpand"> <Label Text="{ext:Localizing CountryName}" HorizontalOptions="CenterAndExpand"/> </StackLayout> </ContentPage.Content> </ContentPage> Sample application demo You can see that the text (CountryName) in the application is changed to the localized text when the language setting is changed. View the full blog at its source
  21. Did you miss out on the latest Samsung Developer newsletter? Catch up now. If you don't currently receive the newsletter, you can subscribe here. View the full blog at its source
  22. Start Date May 07, 2020 Join Developer Evangelists Diego Lizarazo Rivera of Samsung Developers and Laura Morinigo of Samsung Internet for a Live Chat - discuss application development with Samsung technologies, in Spanish. ¡No te lo pierdas! View the full blog at its source
  23. Recognized for “Best Creative App” in our Best of Galaxy Store Awards 2019 is Concepts by TopHatch. TopHatch empowers creative people with design tools that simplify the creative process with smarter, more intuitive technology. David Brittain, co-founder and CEO of TopHatch, shares how Concepts got started, what it takes to maintain your app’s performance, and tips on how indie designers can establish a successful app development business. Tell us about Concepts. Concepts is an infinite creative workspace for visual thinkers, designers and illustrators. Concepts is used by designers at companies like Unity, Illumination Entertainment, HP, and Disney globally to create and share everything from visual notes and storyboards to architectural layouts and product designs., We built Concepts from the ground up for touch and stylus-based devices. When tablets first began to come out, we saw other apps were transplanting awkward desktop mechanics to mobile interfaces instead of writing for the new ecosystem. We saw that design on a mobile platform could be a lot more intuitive and fun and knew that much more was possible. We've been working on our vision for 7 years now, and our software, stylus, and device performance are so fluid that our designers prefer Concepts over paper. How is the app used? Concepts is a powerful creative tool that allows you to explore and communicate ideas with a quick, natural workflow. The app allows you to sketch, edit, and communicate your ideas with liquid, vector-based brushes, and precision tools. The infinite canvas lets you flow with your ideas as far as they’ll go, with fluid pens and brushes that come in designer COPIC colors. The app's customizable layout, easy-to-use layers, drag+drop imports, and precision grids help you sketch and design effortlessly. Everything you draw is an editable vector that can be updated and moved around the canvas, saving you valuable work time.. Concepts is used by creative professionals for note taking, mind mapping, drawing, storyboarding, graphic design, product iteration, interior design and architectural planning. What is Concepts' development methodology? Our development methodology is highly iterative. We take each feature through a complete design cycle. We focus on building one feature at a time, iterate until it’s clean and well developed, then ship a beta as quickly as we can to hear from our users. They are a fantastic group who give us insightful feedback, which we incorporate before releasing the final product. This means we're delivering releases every week on one platform or another. Tell us about the TopHatch team behind Concepts. Our company has been distributed globally from the very start - often called remote, but it works well for us. Ben and I started the company and worked together on Concepts for a year before meeting in-person. We embrace the benefits of a distributed team and avoid the downsides where we can. That means trusting each team member to get their work done and embracing asynchronous workflows. People in the team work the hours and days that work best for them and plan and schedule their work to minimize blocking dependencies on other people. Was Concepts designed for mobile phones or tablets? Is there a difference? Concepts is designed for tablet and stylus first, as the larger screen gives users the most space to sketch and think. When we brought it to Android, we were likely the first major app built for Chrome OS first - it has a large screen, stylus, and resizable windows we wanted to make sure we supported well. We then made it work for phones, although our design did account for this up-front. It’s a challenge to offer the same tools and functionality on really small screens. Ultimately, we have to bias our decisions to the devices our paying users care about the most, which are the ones that give them the most space to work. What’s your approach to user experience and design principles in app development? Our general philosophy is that a good design interface allows creators to focus on what they want to get done. Concepts is a creative app that helps you to work efficiently, so tools are simple, customizable, and only where you need them. If you forget you're using the app as you're "in the zone”, then we have achieved our goal. In concrete terms, this means minimizing the steps in a workflow, avoiding pop-ups and notifications that block progress, and allowing the user to customize layout and tools so the features they need are close at hand (or tap). Another key principle for us is taking a humble position - we don't assume we have the right answers. We listen closely to what our customers want, we prototype features, get feedback, and then adapt. Sometimes this is painful as it means starting again from scratch on a feature we've put weeks of effort into, but in the long run, it's the right choice. How have you maintained your app’s performance since launch? We focus on the long-term success and health of Concepts. We are constantly looking at all aspects of the app's performance. How are we doing with downloads? How well do users convert to becoming paying users? How much time do they spend using the app? We then have to pick an area of focus and look at how to improve that area. Roughly speaking, we tend to spend 3-6 months focusing on one area at a time, as we have found this level of commitment is needed to get results. It's often hard to move the needle unless you commit to a few cycles of changes - this way you can measure what you try, see the results, and adapt your approach. What advice do you have for indie developers and designers attempting to develop a successful app business? Focus. That's the biggest competitive advantage you have. Find your niche that the big companies are not paying attention to. Build something amazing that is loved by your group of customers. And if your business model requires you making money, make sure you are asking for money from those customers from the very beginning. It's a very clear metric as to whether you are building something that meets a customer's needs. Once you have conquered the niche, expand from there. What is next for Concepts? Our big focus over the coming months is cross-platform workflows. Our goal is to make it easy to share and collaborate on content across Android, Windows, and iOS. How has Samsung helped your business? The number one way Samsung helps is by producing so many amazing products that support a stylus. Nine out of the top ten devices that use Concepts on Android are made by Samsung! A high performance tablet that supports palm rejection and a stylus with pressure and tilt response is key to Concepts being a great experience. With the Best of Galaxy Store Awards 2020 selections approaching mid-year, what tips do you have to stand out from the crowd? It's probably not what they want to hear, but I'd recommend not focusing on awards. Focus on making your customers happy :) . We want to thank David for talking with us about TopHatch’s award winning design tools, how Concepts was developed and the importance of monitoring app performance and tips for indie developers interested in building a successful app business. If you’re on a Samsung Galaxy device, you can check out their app here. Follow us on Twitter at @samsung_dev for more developer interviews as well as tips for building games, apps, and more for the Galaxy Store. Find out more about our Best of Galaxy Store Awards. View the full blog at its source
  24. Recognized for “Best Creative App” in our Best of Galaxy Store Awards 2019 is Concepts by TopHatch. TopHatch empowers creative people with design tools that simplify the creative process with smarter, more intuitive technology. David Brittain, co-founder and CEO of TopHatch, shares how Concepts got started, what it takes to maintain your app’s performance, and tips on how indie designers can establish a successful app development business. Tell us about Concepts. Concepts is an infinite creative workspace for visual thinkers, designers and illustrators. Concepts is used by designers at companies like Unity, Illumination Entertainment, HP, and Disney globally to create and share everything from visual notes and storyboards to architectural layouts and product designs., We built Concepts from the ground up for touch and stylus-based devices. When tablets first began to come out, we saw other apps were transplanting awkward desktop mechanics to mobile interfaces instead of writing for the new ecosystem. We saw that design on a mobile platform could be a lot more intuitive and fun and knew that much more was possible. We've been working on our vision for 7 years now, and our software, stylus, and device performance are so fluid that our designers prefer Concepts over paper. How is the app used? Concepts is a powerful creative tool that allows you to explore and communicate ideas with a quick, natural workflow. The app allows you to sketch, edit, and communicate your ideas with liquid, vector-based brushes, and precision tools. The infinite canvas lets you flow with your ideas as far as they’ll go, with fluid pens and brushes that come in designer COPIC colors. The app's customizable layout, easy-to-use layers, drag+drop imports, and precision grids help you sketch and design effortlessly. Everything you draw is an editable vector that can be updated and moved around the canvas, saving you valuable work time.. Concepts is used by creative professionals for note taking, mind mapping, drawing, storyboarding, graphic design, product iteration, interior design and architectural planning. What is Concepts' development methodology? Our development methodology is highly iterative. We take each feature through a complete design cycle. We focus on building one feature at a time, iterate until it’s clean and well developed, then ship a beta as quickly as we can to hear from our users. They are a fantastic group who give us insightful feedback, which we incorporate before releasing the final product. This means we're delivering releases every week on one platform or another. Tell us about the TopHatch team behind Concepts. Our company has been distributed globally from the very start - often called remote, but it works well for us. Ben and I started the company and worked together on Concepts for a year before meeting in-person. We embrace the benefits of a distributed team and avoid the downsides where we can. That means trusting each team member to get their work done and embracing asynchronous workflows. People in the team work the hours and days that work best for them and plan and schedule their work to minimize blocking dependencies on other people. Was Concepts designed for mobile phones or tablets? Is there a difference? Concepts is designed for tablet and stylus first, as the larger screen gives users the most space to sketch and think. When we brought it to Android, we were likely the first major app built for Chrome OS first - it has a large screen, stylus, and resizable windows we wanted to make sure we supported well. We then made it work for phones, although our design did account for this up-front. It’s a challenge to offer the same tools and functionality on really small screens. Ultimately, we have to bias our decisions to the devices our paying users care about the most, which are the ones that give them the most space to work. What’s your approach to user experience and design principles in app development? Our general philosophy is that a good design interface allows creators to focus on what they want to get done. Concepts is a creative app that helps you to work efficiently, so tools are simple, customizable, and only where you need them. If you forget you're using the app as you're "in the zone”, then we have achieved our goal. In concrete terms, this means minimizing the steps in a workflow, avoiding pop-ups and notifications that block progress, and allowing the user to customize layout and tools so the features they need are close at hand (or tap). Another key principle for us is taking a humble position - we don't assume we have the right answers. We listen closely to what our customers want, we prototype features, get feedback, and then adapt. Sometimes this is painful as it means starting again from scratch on a feature we've put weeks of effort into, but in the long run, it's the right choice. How have you maintained your app’s performance since launch? We focus on the long-term success and health of Concepts. We are constantly looking at all aspects of the app's performance. How are we doing with downloads? How well do users convert to becoming paying users? How much time do they spend using the app? We then have to pick an area of focus and look at how to improve that area. Roughly speaking, we tend to spend 3-6 months focusing on one area at a time, as we have found this level of commitment is needed to get results. It's often hard to move the needle unless you commit to a few cycles of changes - this way you can measure what you try, see the results, and adapt your approach. What advice do you have for indie developers and designers attempting to develop a successful app business? Focus. That's the biggest competitive advantage you have. Find your niche that the big companies are not paying attention to. Build something amazing that is loved by your group of customers. And if your business model requires you making money, make sure you are asking for money from those customers from the very beginning. It's a very clear metric as to whether you are building something that meets a customer's needs. Once you have conquered the niche, expand from there. What is next for Concepts? Our big focus over the coming months is cross-platform workflows. Our goal is to make it easy to share and collaborate on content across Android, Windows, and iOS. How has Samsung helped your business? The number one way Samsung helps is by producing so many amazing products that support a stylus. Nine out of the top ten devices that use Concepts on Android are made by Samsung! A high performance tablet that supports palm rejection and a stylus with pressure and tilt response is key to Concepts being a great experience. With the Best of Galaxy Store Awards 2020 selections approaching mid-year, what tips do you have to stand out from the crowd? It's probably not what they want to hear, but I'd recommend not focusing on awards. Focus on making your customers happy :) . We want to thank David for talking with us about TopHatch’s award winning design tools, how Concepts was developed and the importance of monitoring app performance and tips for indie developers interested in building a successful app business. If you’re on a Samsung Galaxy device, you can check out their app here. Follow us on Twitter at @samsung_dev for more developer interviews as well as tips for building games, apps, and more for the Galaxy Store. Find out more about our Best of Galaxy Store Awards. View the full blog at its source
  25. We at Samsung Internet care a lot about Progressive Web Apps (PWAs), this is why we decided to feature some awesome PWAs that we found online. Firstly, what are PWAs? Progressive Web App (PWA) is a concept created by Frances Berriman and Alex Russel to describe apps taking advantage of new features supported by modern browsers that are built using including HTML, CSS, and JavaScript (yes, just web technologies ❤). This is the introduction to Laura’s blog post. I recommend reading her blog post if you are interrested in making a PWA: Progressive Web Apps: Making app-like experiences in the browser Context I discovered Make me cocktail, thanks to Dan (The Director of Web Advocacy at Samsung Internet) during a conversation about PWAs that he was using. I found the Web app particularly useful, especially the “my bar” feature which is just doing the job and making it easier to find nice recipes using only what we have at home. Also, very convenient for noobs like me. We thought why not reach out, learn more about why they choose to develop a PWA for their platform and write a blog post about it! Make Me A Cocktail An Interview with Nick Wilkins from Make Me A Cocktail Make me a Cocktail was founded in 2010, by Nick, with the goal of becoming the best online platform related to cocktail and drink recipes. All of this started because Nick became annoyed of browsing the web trying to find a decent cocktail recipes, and so he decided to create his own platform! Since then the platform evolved and became more popular with more functionalities and design improvements. Why did you decide to make the website a PWA? We originally floated the idea of making the site a PWA when we were investing in a small rewrite of some core underlying structures on the site, and seeing what new technologies had emerged and were emerging in the dev world. At this time we were also investing heavily in performance and trying to understand how we could make our fairly image- and dynamic- rich site, fast and performant for all our users. We were also really keen to explore the possibilities or porting our site over to an app — and this seemed like a great emerging option for this. Did you encounter any technical challenges during the process? We decided early on to not make our site a pure fully-works-offline PWA, but to utilise all of the technologies and opportunities a PWA gives you to give the best experience to the user. Obviously the service worker was a large part of this, and that was the core technical challenge we encountered. Good documentation and tutorials were sparse when we first started to utilise it. Browser dev tools weren’t quite as slick for service workers as they are now, so the core hurdles were dealing with understanding the service worker lifecycle and how to test new ones efficiently and cleanly. Our knowledge of dev tools and the network pane specifically, really increased here. How did the PWA help you, and how did you utilise the service worker power? Ultimately the PWA has helped us in two areas. One is speed and performance. The service worker caching mechanisms and thus serving up assets quickly to users is just a win-win situation. But, we also like to think, and this is a little less tangible, that we’ve given users more accessibility and a better user-experience / option to find data quicker. Things like the manifest, the add to home screen options and the like have helped create quicker avenues to data for the end-user. Thoughts It really is fairly easy now to create a base PWA without offline capability. Depending on your app size and complexity, and your stack, adding full or partial offline capability can be harder and more of a technical challenge. Dynamic user based data that you can’t cache upfront (or can’t cache up to date data) comes at a price if you want to go down that route, and it's important to explore all those avenues. There are little cons to implementing the base PWA experience, the cons really come with time and knowledge that you may need to invest. But ultimately it is all worth it. Conclusion As said by Nick above, creating PWAs is the way to give better experiences to users. This is why at Samsung Internet, we do care a lot about PWAs, and we are currently seeking for PWAs with good user experience to share with the community or even write about! Please contact us by email [email protected] or Twitter if you are working on a PWA or know a good PWA ! Thank you, Kevin (@KevinPicchi, picchi.ch) View the full blog at its source


×
×
  • Create New...