-
Posts
1,079 -
Joined
-
Last visited
Never
Everything posted by Samsung Newsroom
-
In order to offer the best experience for consumers in Galaxy Store, watch face sellers must first be approved to publish. This approval is done by submitting an initial watch face design that demonstrates your ability to create exceptional, unique, high-quality watch faces and abide by copyright laws. This process is called a Watch Face Design Review Request. Approval of new designers by the Galaxy Watch Review Team is very limited and only exceptional designers will be granted access to publishing their watch faces in Galaxy Store. When can new designers apply? Applications are only accepted during certain times of the year, this is called the “Open Window”. Visit the Watch Face Design Review page to check the status of the current application window and future open window dates. Open Window Status What are the application requirements? Applications must be submitted as a single (multi-page) PDF and include the following information: Personal Information A cover letter (in English) that contains a brief paragraph saying who you are, why you want to sell watch faces, and how your designs will enhance a Galaxy Watch owner’s experience If you are a business, a copy of DBA or articles of association or organization Experiences that qualify you to design and sell watch faces such as certificates or diplomas from design schools or universities, design awards, or other design experiences Links to your design portfolio (website, Instagram, Facebook page, or other social media sites) List of unique features or design elements that set your designs apart from others Understanding of Intellectual Property rights, specifically section 3.2 of the App Distribution Guide, regarding Intellectual Property. State in a few sentences what Intellectual Property rights are and who is responsible. Watch Face Designs Include up to five watch face designs for review. One image of the main screen of your watch face design at a minimum dimension of 360 x 360 pixels. One image of your watch face applied to a watch. See below for details on generating images, tools you can use, and information about how to capture your watch face design. Optionally, provide any additional images that demonstrate the features of your watch face that are not shown in the main screen image (animations, tap reveal buttons, etc.). All watch face designs should be added as separate pages to your application PDF. Do NOT include binary files such as the .tpk or .gwd files. Submitting copyright protected content If you are submitting copyrighted content, you must include the license or official documentation showing permission to use the content with your application. Copyright protected content may include, but is not limited to brand identifiers, public institutions, sports clubs/teams, media, products, landmarks, images of people, and original or artistic renderings of copyright protected content. If a license or official documentation showing permission is not included, your application will be rejected. How to apply for review When the window for applying is open, Go to Watch Face Design Review Request. Log in using your Samsung account. If you do not have an account, sign up here. Provide the required information explained in the Application Requirements section above. Once the application window closes the Galaxy Watch Review Team may take several weeks to review all applications. At the completion of the review, applicants will be notified by email whether or not they have been selected to become watch face publishers. After a designer has been approved, all future watch face designs are only tested for functionality before being published in Galaxy Store. The Seller Portal Review Team analyzes the user interface, confirming that there are no issues before each watch face can be published. This review process is not related to the Watch Face Design Review that permits you to become a watch face publisher. Resources for generating watch face images Below are links to tools for assisting with generating the required images when submitting your application. Use of these resources are optional. If you used Galaxy Watch Studio, from the Run window you can view and capture images of your watch face and your watch face applied to a Galaxy Watch (images are 512 x 512 pixels). View this tutorial video on capturing images using Galaxy Watch Studio. If you tested your design on a watch, you can capture a screenshot of your design using the watch. (images are 360 x 360 pixels). Once you have an image of your watch face, use the Galaxy Store Asset Creator or Lifestyle Photo Assets to help create additional images (requires Adobe Photoshop). Submit your finest The Galaxy Watch Review Team wants to see your best! Simple watch face designs may be attractive for some, but they do not showcase your design skills. Submit designs that show your ability to create unique watch faces with a comprehensive user interface. Simple Watch Face Design The watch face designs you submit should only contain your original artwork and not the components provided with Galaxy Watch Studio. Your design should include custom imported watch hands and custom component graphics. Default Galaxy Watch Studio Components Be unique! There are thousands of designs available for download from Galaxy Store. How will you make your design stand out from the rest? For example, if you want to design a watch face that shows battery usage and health content, using the default components provided by Galaxy Watch Studio is not enough. Create your own icons and develop your own sophisticated style. The following watch faces are examples of rejected designs that show battery usage and health content. These designs are not sophisticated enough to show a designer’s capabilities. Content appearance and arrangement Are you providing enough information? Are you providing too much information? Are your components easy to read and understand in a glance? For example, the color or opacity of a background image or component may make the watch face difficult to read. Make sure your content is organized and easy to understand even basic information. The following watch faces are examples that were rejected because the information provided in the design was not easy to read. Image quality Another common issue with rejected applications is that the designs are low resolution or low quality. All images should be well-defined and sharp. Images generated from a Galaxy Watch screen capture or Galaxy Watch Studio (provided that embedded images used in the design are also high quality) are acceptable. The native resolution of a screen capture from a Galaxy Watch is 360 x 360 pixels. The native resolution of a screen capture from Galaxy Watch Studio is 512 x 512 pixels. Note that if you generate your image differently, just because an image matches one of these resolutions, it does not guarantee the image is high quality. A blurry image in high resolution is still a blurry image. Overall designs or embedded images that are pixelated or blurry will be rejected. If your design purposely contains pixelated or blurry images, please provide an explanation in the comments section of the review request. The examples below show a pixelated, a blurry, and sharp a watch face image. Submitted images A minimum of two images of your design must be submitted with your design review request. One of the images can be just a screenshot of the watch face, but the other must show how the design is displayed on a watch. For example, if the following image is submitted, the Galaxy Watch Review Team would not know what the design would look like on an actual watch. Would the watch face be centered inside the image, would the entire image fill the watch face, or would the image need to be cropped? Example of an image that does not meet submission criteria Examples of well-designed watch faces The following are examples of high-quality watch faces that meet or exceed the expectations of the Galaxy Watch Review Team. AWF New Digital Matveyan - Round Rainbow USA Florencia WAW - FlashY amoledwatchfaces MatveyAn USA Design WAW Watch Faces Application rejection The following are common reasons why your application may be rejected: Design includes copyright protected content without license or official documentation showing permission to use. Watch face design is too simple, not unique, not creative. Poor appearance or design execution of watch face. Watch face images are low quality. Required watch face images are not included. If your application is rejected, we encourage you to apply again during the next open window. Get ready to submit! The Galaxy Watch Review Team is always looking for talented and unique watch face designers to sell their apps in Galaxy Store. Do your research on watch faces and take your time to design the strongest, most unique watch faces you can. Once you have an extremely strong portfolio and have completed all of the application requirements, submit your application during the next open window. We’d love to see you in Galaxy Store! View the full blog at its source
-
In order to offer the best experience for consumers in Galaxy Store, watch face sellers must first be approved to publish. This approval is done by submitting an initial watch face design that demonstrates your ability to create exceptional, unique, high-quality watch faces and abide by copyright laws. This process is called a Watch Face Design Review Request. Approval of new designers by the Galaxy Watch Review Team is very limited and only exceptional designers will be granted access to publishing their watch faces in Galaxy Store. When can new designers apply? Applications are only accepted during certain times of the year, this is called the “Open Window”. Visit the Watch Face Design Review page to check the status of the current application window and future open window dates. Open Window Status What are the application requirements? Applications must be submitted as a single (multi-page) PDF and include the following information: Personal Information A cover letter (in English) that contains a brief paragraph saying who you are, why you want to sell watch faces, and how your designs will enhance a Galaxy Watch owner’s experience If you are a business, a copy of DBA or articles of association or organization Experiences that qualify you to design and sell watch faces such as certificates or diplomas from design schools or universities, design awards, or other design experiences Links to your design portfolio (website, Instagram, Facebook page, or other social media sites) List of unique features or design elements that set your designs apart from others Understanding of Intellectual Property rights, specifically section 3.2 of the App Distribution Guide, regarding Intellectual Property. State in a few sentences what Intellectual Property rights are and who is responsible. Watch Face Designs Include up to five watch face designs for review. One image of the main screen of your watch face design at a minimum dimension of 360 x 360 pixels. One image of your watch face applied to a watch. See below for details on generating images, tools you can use, and information about how to capture your watch face design. Optionally, provide any additional images that demonstrate the features of your watch face that are not shown in the main screen image (animations, tap reveal buttons, etc.). All watch face designs should be added as separate pages to your application PDF. Do NOT include binary files such as the .tpk or .gwd files. Submitting copyright protected content If you are submitting copyrighted content, you must include the license or official documentation showing permission to use the content with your application. Copyright protected content may include, but is not limited to brand identifiers, public institutions, sports clubs/teams, media, products, landmarks, images of people, and original or artistic renderings of copyright protected content. If a license or official documentation showing permission is not included, your application will be rejected. How to apply for review When the window for applying is open, Go to Watch Face Design Review Request. Log in using your Samsung account. If you do not have an account, sign up here. Provide the required information explained in the Application Requirements section above. Once the application window closes the Galaxy Watch Review Team may take several weeks to review all applications. At the completion of the review, applicants will be notified by email whether or not they have been selected to become watch face publishers. After a designer has been approved, all future watch face designs are only tested for functionality before being published in Galaxy Store. The Seller Portal Review Team analyzes the user interface, confirming that there are no issues before each watch face can be published. This review process is not related to the Watch Face Design Review that permits you to become a watch face publisher. Resources for generating watch face images Below are links to tools for assisting with generating the required images when submitting your application. Use of these resources are optional. If you used Galaxy Watch Studio, from the Run window you can view and capture images of your watch face and your watch face applied to a Galaxy Watch (images are 512 x 512 pixels). View this tutorial video on capturing images using Galaxy Watch Studio. If you tested your design on a watch, you can capture a screenshot of your design using the watch. (images are 360 x 360 pixels). Once you have an image of your watch face, use the Galaxy Store Asset Creator or Lifestyle Photo Asset Packs to help create additional images (requires Adobe Photoshop). Submit your finest The Galaxy Watch Review Team wants to see your best! Simple watch face designs may be attractive for some, but they do not showcase your design skills. Submit designs that show your ability to create unique watch faces with a comprehensive user interface. Simple Watch Face Design The watch face designs you submit should only contain your original artwork and not the components provided with Galaxy Watch Studio. Your design should include custom imported watch hands and custom component graphics. Default Galaxy Watch Studio Components Be unique! There are thousands of designs available for download from Galaxy Store. How will you make your design stand out from the rest? For example, if you want to design a watch face that shows battery usage and health content, using the default components provided by Galaxy Watch Studio is not enough. Create your own icons and develop your own sophisticated style. The following watch faces are examples of rejected designs that show battery usage and health content. These designs are not sophisticated enough to show a designer’s capabilities. Content appearance and arrangement Are you providing enough information? Are you providing too much information? Are your components easy to read and understand in a glance? For example, the color or opacity of a background image or component may make the watch face difficult to read. Make sure your content is organized and easy to understand even basic information. The following watch faces are examples that were rejected because the information provided in the design was not easy to read. Image quality Another common issue with rejected applications is that the designs are low resolution or low quality. All images should be well-defined and sharp. Images generated from a Galaxy Watch screen capture or Galaxy Watch Studio (provided that embedded images used in the design are also high quality) are acceptable. The native resolution of a screen capture from a Galaxy Watch is 360 x 360 pixels. The native resolution of a screen capture from Galaxy Watch Studio is 512 x 512 pixels. Note that if you generate your image differently, just because an image matches one of these resolutions, it does not guarantee the image is high quality. A blurry image in high resolution is still a blurry image. Overall designs or embedded images that are pixelated or blurry will be rejected. If your design purposely contains pixelated or blurry images, please provide an explanation in the comments section of the review request. The examples below show a pixelated, a blurry, and sharp a watch face image. Submitted images A minimum of two images of your design must be submitted with your design review request. One of the images can be just a screenshot of the watch face, but the other must show how the design is displayed on a watch. For example, if the following image is submitted, the Galaxy Watch Review Team would not know what the design would look like on an actual watch. Would the watch face be centered inside the image, would the entire image fill the watch face, or would the image need to be cropped? Example of an image that does not meet submission criteria Examples of well-designed watch faces The following are examples of high-quality watch faces that meet or exceed the expectations of the Galaxy Watch Review Team. AWF New Digital by amoledwatchfaces Matveyan - Round Rainbow by MatveyAn USA Florencia by USA Design WAW | FlashY by WAW Watch Faces Application rejection The following are common reasons why your application may be rejected: Design includes copyright protected content without license or official documentation showing permission to use. Watch face design is too simple, not unique, not creative. Poor appearance or design execution of watch face. Watch face images are low quality. Required watch face images are not included. If your application is rejected, we encourage you to apply again during the next open window. Get ready to submit! The Galaxy Watch Review Team is always looking for talented and unique watch face designers to sell their apps in Galaxy Store. Do your research on watch faces and take your time to design the strongest, most unique watch faces you can. Once you have an extremely strong portfolio and have completed all of the application requirements, submit your application during the next open window. We’d love to see you in Galaxy Store! View the full blog at its source
-
In order to offer the best experience for consumers in Galaxy Store, watch face sellers must first be approved to publish. This approval is done by submitting an initial watch face design that demonstrates your ability to create exceptional, unique, high-quality watch faces and abide by copyright laws. This process is called a Watch Face Design Review Request. Approval of new designers by the Galaxy Watch Review Team is very limited and only exceptional designers will be granted access to publishing their watch faces in Galaxy Store. When can new designers apply? Applications are only accepted during certain times of the year, this is called the “Open Window”. Visit the Watch Face Design Review page to check the status of the current application window and future open window dates. Open Window Status What are the application requirements? Applications must be submitted as a single (multi-page) PDF and include the following information: Personal Information A cover letter (in English) that contains a brief paragraph saying who you are, why you want to sell watch faces, and how your designs will enhance a Galaxy Watch owner’s experience If you are a business, a copy of DBA or articles of association or organization Experiences that qualify you to design and sell watch faces such as certificates or diplomas from design schools or universities, design awards, or other design experiences Links to your design portfolio (website, Instagram, Facebook page, or other social media sites) List of unique features or design elements that set your designs apart from others Understanding of Intellectual Property rights, specifically section 3.2 of the App Distribution Guide, regarding Intellectual Property. State in a few sentences what Intellectual Property rights are and who is responsible. Watch Face Designs Include up to five watch face designs for review. One image of the main screen of your watch face design at a minimum dimension of 360 x 360 pixels. One image of your watch face applied to a watch. See below for details on generating images, tools you can use, and information about how to capture your watch face design. Optionally, provide any additional images that demonstrate the features of your watch face that are not shown in the main screen image (animations, tap reveal buttons, etc.). All watch face designs should be added as separate pages to your application PDF. Do NOT include binary files such as the .tpk or .gwd files. Submitting copyright protected content If you are submitting copyrighted content, you must include the license or official documentation showing permission to use the content with your application. Copyright protected content may include, but is not limited to brand identifiers, public institutions, sports clubs/teams, media, products, landmarks, images of people, and original or artistic renderings of copyright protected content. If a license or official documentation showing permission is not included, your application will be rejected. How to apply for review When the window for applying is open, Go to Watch Face Design Review Request. Log in using your Samsung account. If you do not have an account, sign up here. Provide the required information explained in the Application Requirements section above. Once the application window closes the Galaxy Watch Review Team may take several weeks to review all applications. At the completion of the review, applicants will be notified by email whether or not they have been selected to become watch face publishers. After a designer has been approved, all future watch face designs are only tested for functionality before being published in Galaxy Store. The Seller Portal Review Team analyzes the user interface, confirming that there are no issues before each watch face can be published. This review process is not related to the Watch Face Design Review that permits you to become a watch face publisher. Resources for generating watch face images Below are links to tools for assisting with generating the required images when submitting your application. Use of these resources are optional. If you used Galaxy Watch Studio, from the Run window you can view and capture images of your watch face and your watch face applied to a Galaxy Watch (images are 512 x 512 pixels). View this tutorial video on capturing images using Galaxy Watch Studio. If you tested your design on a watch, you can capture a screenshot of your design using the watch. (images are 360 x 360 pixels). Once you have an image of your watch face, use the Galaxy Store Asset Creator or Lifestyle Photo Asset Packs to help create additional images (requires Adobe Photoshop). Submit your finest The Galaxy Watch Review Team wants to see your best! Simple watch face designs may be attractive for some, but they do not showcase your design skills. Submit designs that show your ability to create unique watch faces with a comprehensive user interface. Simple Watch Face Design The watch face designs you submit should only contain your original artwork and not the components provided with Galaxy Watch Studio. Your design should include custom imported watch hands and custom component graphics. Default Galaxy Watch Studio Components Be unique! There are thousands of designs available for download from Galaxy Store. How will you make your design stand out from the rest? For example, if you want to design a watch face that shows battery usage and health content, using the default components provided by Galaxy Watch Studio is not enough. Create your own icons and develop your own sophisticated style. The following watch faces are examples of rejected designs that show battery usage and health content. These designs are not sophisticated enough to show a designer’s capabilities. Content appearance and arrangement Are you providing enough information? Are you providing too much information? Are your components easy to read and understand in a glance? For example, the color or opacity of a background image or component may make the watch face difficult to read. Make sure your content is organized and easy to understand even basic information. The following watch faces are examples that were rejected because the information provided in the design was not easy to read. Image quality Another common issue with rejected applications is that the designs are low resolution or low quality. All images should be well-defined and sharp. Images generated from a Galaxy Watch screen capture or Galaxy Watch Studio (provided that embedded images used in the design are also high quality) are acceptable. The native resolution of a screen capture from a Galaxy Watch is 360 x 360 pixels. The native resolution of a screen capture from Galaxy Watch Studio is 512 x 512 pixels. Note that if you generate your image differently, just because an image matches one of these resolutions, it does not guarantee the image is high quality. A blurry image in high resolution is still a blurry image. Overall designs or embedded images that are pixelated or blurry will be rejected. If your design purposely contains pixelated or blurry images, please provide an explanation in the comments section of the review request. The examples below show a pixelated, a blurry, and sharp a watch face image. Submitted images A minimum of two images of your design must be submitted with your design review request. One of the images can be just a screenshot of the watch face, but the other must show how the design is displayed on a watch. For example, if the following image is submitted, the Galaxy Watch Review Team would not know what the design would look like on an actual watch. Would the watch face be centered inside the image, would the entire image fill the watch face, or would the image need to be cropped? Example of an image that does not meet submission criteria Examples of well-designed watch faces The following are examples of high-quality watch faces that meet or exceed the expectations of the Galaxy Watch Review Team. AWF New Digital by amoledwatchfaces Matveyan - Round Rainbow by MatveyAn USA Florencia by USA Design WAW | FlashY by WAW Watch Faces Application rejection The following are common reasons why your application may be rejected: Design includes copyright protected content without license or official documentation showing permission to use. Watch face design is too simple, not unique, not creative. Poor appearance or design execution of watch face. Watch face images are low quality. Required watch face images are not included. If your application is rejected, we encourage you to apply again during the next open window. Get ready to submit! The Galaxy Watch Review Team is always looking for talented and unique watch face designers to sell their apps in Galaxy Store. Do your research on watch faces and take your time to design the strongest, most unique watch faces you can. Once you have an extremely strong portfolio and have completed all of the application requirements, submit your application during the next open window. We’d love to see you in Galaxy Store! View the full blog at its source
-
In this episode of POW, we interview Chris Shomo from Infinity Watchfaces. Chris was one of the first designers to start selling watch faces on Galaxy Store and has become a very successful app designer. Along the way he has inspired many other designers to start creating for Samsung with his willingness to share his knowledge and expertise. If you're on a Galaxy device, check out Chris' watch faces and themes on Galaxy Store. Check out his favorite, Fred, the Butterfly Topics Covered: Galaxy Watch Studio Galaxy Themes Studio Galaxy Store Galaxy Store Badges Social Promotion & Hashtags Jibber Jab Reviews Jibber Jab Reviews Live Chat IoT Gadgets Galaxy Watch Facebook Group Tap Reveal Tutorial Galaxy Watch3 Asset Creator Lifestyle Photos Chris Shomo SDC17 Video Presentation View the full blog at its source
-
In this episode of POW, we interview Chris Shomo from Infinity Watchfaces. Chris was one of the first designers to start selling watch faces on Galaxy Store and has become a very successful app designer. Along the way he has inspired many other designers to start creating for Samsung with his willingness to share his knowledge and expertise. If you're on a Galaxy device, check out Chris' watch faces and themes on Galaxy Store. Check out his favorite, Fred, the Butterfly Topics Covered: Galaxy Watch Studio Galaxy Themes Studio Galaxy Store Galaxy Store Badges Social Promotion & Hashtags Jibber Jab Reviews Jibber Jab Reviews Live Chat Tap Reveal Galaxy Watch3 Asset Creator Lifestyle Photos Chris Shomo SDC17 Video Presentation View the full blog at its source
-
In this new video tutorial, you will learn how to reach a new gaming audience by publishing in Galaxy Store. Galaxy Store is a premium store, designed to make Galaxy mobile devices come alive in their own, unique way. Discover how to prepare and submit your Unity3D games to Galaxy Store. At the end of this talk, you will have the knowledge to create the right binary files and assets that are required to submit and distribute your first Unity game and ultimately reach the global Samsung audience. If you have knowledge of game development, or are interested in learning how to distribute your upcoming releases, we encourage you to watch. This talk will show participants how to: • Create a Galaxy Store Seller Portal account • Export your game in Unity • Complete the different submission steps in the Galaxy Store Seller Portal • Resolve common errors in your game submission You can also connect with Diego, a Sr. Developer Evangelist, on Twitter Have questions? Post them in our forums. View the full blog at its source
-
In this new video tutorial, you will learn how to reach a new gaming audience by publishing in Galaxy Store. Galaxy Store is a premium store, designed to make Galaxy mobile devices come alive in their own, unique way. Discover how to prepare and submit your Unity3D games to Galaxy Store. At the end of this talk, you will have the knowledge to create the right binary files and assets that are required to submit and distribute your first Unity game and ultimately reach the global Samsung audience. If you have knowledge of game development, or are interested in learning how to distribute your upcoming releases, we encourage you to watch. This talk will show participants how to: • Create a Galaxy Store Seller Portal account • Export your game in Unity • Complete the different submission steps in the Galaxy Store Seller Portal • Resolve common errors in your game submission You can also connect with Diego, a Sr. Developer Evangelist, on Twitter Have questions? Post them in our forums. View the full blog at its source
-
The latest edition of Galaxy Unpacked was held on Wednesday, August 5th, and for the first time it was virtual. We unveiled five new devices that empower work and play. Galaxy Unpacked featured lots of exciting updates for our designer and developer community, and what was mystery became mystic (bronze). You can watch the full livestream on YouTube, or fast forward to these time codes for key moments 8:50 Galaxy Note20 and Note20 Ultra 53:45 Galaxy Watch3 1:08:01 Galaxy Z Fold2 Be sure to check out our Galaxy Watch3 artboards, now available on the Galaxy Watch Asset Creator. And now, here are the key takeaways on each of the new devices unveiled at Galaxy Unpacked. Galaxy Note20 and Note20 Ultra The Galaxy Note20 Series is a productivity powerhouse that works like a computer and lets users game like a pro. The series comes in two versions: Galaxy Note20 Ultra, designed for Note fans who demand the ultimate in power and productivity, and Galaxy Note20, for those Note users looking to maximize their time for work and play. The Galaxy Note20 series includes the ever-popular S Pen. Developers, you can leverage the S Pen Remote SDK, S Pen Framework, and Air Actions to enhance the experience of your apps and games. As part of our continued partnership with Microsoft, Xbox Game Pass is coming to Galaxy Store. With an Xbox Game Pass Ultimate subscription, users will be able to play their favorite Xbox games in the cloud (beta) right from their Galaxy device. Galaxy users are always looking for new games to play, so be sure to submit your own game to Galaxy Store. If your game has in-app items for sale, be sure to check out the Samsung In-App Purchase SDK which lets users transact with any of the payment methods associated with their Samsung Account, including Samsung Pay and Samsung Rewards. We also have numerous technical resources and best practices on optimizing your game and getting the most out of the device GPU in Galaxy GameDev. We also unveiled the new wireless version of Samsung DeX. As Samsung DeX becomes even easier to use, you'll want to ensure your apps are optimized for Samsung DeX. Our resources detail how to add multi-window support, handle runtime configuration changes, and support different input modes. Galaxy Watch3 The Galaxy Watch3 is a next-generation companion for managing routines, smashing fitness goals, and taking ownership over health. Built with premium materials and a slimmed-down version of the popular rotating bezel, Galaxy Watch3 features the craftsmanship of a luxury timepiece, while still being comfortable enough to wear all day and all night. Developers can build Tizen-based apps while designers can build watch faces with Galaxy Watch Studio to enhance and customize the user's experience. We will begin reviewing new watch face designs starting next week, but you can get a head start on the requirements now. As we mentioned, a new version of the Galaxy Watch Asset Creator, which includes the Galaxy Watch3, is now available. New Lifestyle Photo Asset Packs will be coming soon as well. The new Galaxy Watch3 runs Tizen 5.5. Developers can check out this video tutorial to learn what is new in Tizen 5.5. Galaxy Z Fold2 Last, but certainly not least, was the Galaxy Z Fold2. This device builds on the experience of both the Galaxy Fold and the Galaxy Z Flip to deliver unique foldable experiences. More details about the Galaxy Z Fold2 will be released on September 1st. In the meantime, check out our resources on designing and optimizing for foldable devices. Wrap Up We also showcased the Galaxy Tab S7 and S7+, devices where your apps and games will be featured in Galaxy Store. The Galaxy Buds Live introduced a new shape for wireless earbuds, an ergonomic design that’s being described as the perfect fit. Can't get your hands on a physical device? Stay tuned to our news feed - we'll announce when the new devices are available in our Remote Test Lab. We can't wait to see what you create for these new devices. Make sure to join us on the developer forums to share what you're working on and get your questions answered. Catch up on all of yesterday's announcements on the Samsung Newsroom or watch the replay on YouTube. View the full blog at its source
-
The latest edition of Galaxy Unpacked was held on Wednesday, August 5th, and for the first time it was virtual. We unveiled five new devices that empower work and play. Galaxy Unpacked featured lots of exciting updates for our designer and developer community, and what was mystery became mystic (bronze). You can watch the full livestream on YouTube, or fast forward to these time codes for key moments 8:50 Galaxy Note20 and Note20 Ultra 53:45 Galaxy Watch3 1:08:01 Galaxy Z Fold2 Be sure to check out our Galaxy Watch3 artboards, now available on the Galaxy Watch Asset Creator. And now, here are the key takeaways on each of the new devices unveiled at Galaxy Unpacked. Galaxy Note20 and Note20 Ultra The Galaxy Note20 Series is a productivity powerhouse that works like a computer and lets users game like a pro. The series comes in two versions: Galaxy Note20 Ultra, designed for Note fans who demand the ultimate in power and productivity, and Galaxy Note20, for those Note users looking to maximize their time for work and play. The Galaxy Note20 series includes the ever-popular S Pen. Developers, you can leverage the S Pen Remote SDK, S Pen Framework, and Air Actions to enhance the experience of your apps and games. As part of our continued partnership with Microsoft, Xbox Game Pass is coming to Galaxy Store. With an Xbox Game Pass Ultimate subscription, users will be able to play their favorite Xbox games in the cloud (beta) right from their Galaxy device. Galaxy users are always looking for new games to play, so be sure to submit your own game to Galaxy Store. If your game has in-app items for sale, be sure to check out the Samsung In-App Purchase SDK which lets users transact with any of the payment methods associated with their Samsung Account, including Samsung Pay and Samsung Rewards. We also have numerous technical resources and best practices on optimizing your game and getting the most out of the device GPU in Galaxy GameDev. We also unveiled the new wireless version of Samsung DeX. As Samsung DeX becomes even easier to use, you'll want to ensure your apps are optimized for Samsung DeX. Our resources detail how to add multi-window support, handle runtime configuration changes, and support different input modes. Galaxy Watch3 The Galaxy Watch3 is a next-generation companion for managing routines, smashing fitness goals, and taking ownership over health. Built with premium materials and a slimmed-down version of the popular rotating bezel, Galaxy Watch3 features the craftsmanship of a luxury timepiece, while still being comfortable enough to wear all day and all night. Developers can build Tizen-based apps while designers can build watch faces with Galaxy Watch Studio to enhance and customize the user's experience. We will begin reviewing new watch face designs starting next week, but you can get a head start on the requirements now. As we mentioned, a new version of the Galaxy Watch Asset Creator, which includes the Galaxy Watch3, is now available. New Lifestyle Photo Asset Packs will be coming soon as well. Galaxy Z Fold2 Last, but certainly not least, was the Galaxy Z Fold2. This device builds on the experience of both the Galaxy Fold and the Galaxy Z Flip to deliver unique foldable experiences. More details about the Galaxy Z Fold2 will be released on September 1st. In the meantime, check out our resources on designing and optimizing for foldable devices. Wrap Up We also showcased the Galaxy Tab S7 and S7+, devices where your apps and games will be featured in Galaxy Store. The Galaxy Buds Live introduced a new shape for wireless earbuds, an ergonomic design that’s being described as the perfect fit. Can't get your hands on a physical device? Stay tuned to our news feed - we'll announce when the new devices are available in our Remote Test Lab. We can't wait to see what you create for these new devices. Make sure to join us on the developer forums to share what you're working on and get your questions answered. Catch up on all of yesterday's announcements on the Samsung Newsroom or watch the replay on YouTube. View the full blog at its source
-
A bad practice but sometimes there is no alternative. Last time we introduced about Deno and discussed how it compares to node, like node, Deno is a server side code-execution environment based on web technology. Node uses JavaScript with commonjs modules and npm/yarn as it’s package manager. Deno uses Typescript or JavaScript with modern javascript import statements. It does not need a package manager. To import a module as usual in deno you reference it by URL: import { serve } from "https://deno.land/std/http/server.ts"; You can find many of the modules you may need in the Deno standard library or in the Deno third party modules list but they don’t have everything. Sometimes you need to use a module which the maintainers have only made available through the npm ecosystem. Here are some methods from most convenient to least: 1. If the module already uses ES modules import/export syntax. The libraries you use from deno don’t have to come from the recommended Deno packages they can come from any URL, provided they use the modern import syntax. Using unpkg is a great way to access these files directly from inside an npm repo. import throttle from [https://unpkg.com/[email protected]/throttle.js](https://unpkg.com/[email protected]/throttle.js) 2. If the module itself doesn’t use imports but the source code does If the module is compiled or in the wrong format though npm you may still have some luck if you take a look at the source code. Many popular libraries have moved away from using commonjs in their source code to the standards compliant es module import syntax. Some packages have a separate src/ and dist/ directory where the esmodule style code is in src/ which isn’t included in the package available through npm. In that case you can import from the source directly. import throttle from "https://raw.githubusercontent.com/lodash/lodash/master/throttle.js"; I got this URL by clicking on the “raw” button on github to get the raw JS file. It’s probably neater to use a github cdn or to see if the file is available through github pages, but this works. NB: Some libraries use esmodules with webpack, or a module loader which lets them import from node modules like this: Bad: import { someFunction } from "modulename"; import { someOtherFunction } from "modulename/file.js"; The standard for imports is that they need to start with ./ or be a URL to work Good: import { someOtherFunction } from "./folder/file.js"; In that situation try the next method: 3. Importing commonjs modules Fortunately there is a service called JSPM which will resolve the 3rd party modules and compile the commonjs modules to work as esmodule imports. This tool is for using node modules in the browser without a build step. But we can use it here too. The JSPM logo In my most recent project i wanted to do push notifications, which involves generating the credentials for VAPID, there is a deno crypto library which can do encryption but doing the full procedure is difficult and I’d rather use the popular web-push library. I can import it using the JSPM CDN using the URL like below: import webPush from "https://dev.jspm.io/web-push"; I can now use it like any other module in deno. This almost worked 100% some of the bits which relied on specific node behaviors such as making network requests failed in this situation I had to work around this to use the standardised fetch API deno uses. Getting Typescript types working One nice feature of typescipt, which deno uses, is that it provides really good autocomplete for modules. The deno extension for my editor even can autocomplete for third part modules if it knows the type definitions. This isn’t essential to getting the code to work but can provide huge benefits for helping you maintain your code. When I was importing another module called fast-xml-parser when I was looking through the source code I noticed it had a type definitions file which is a file which ends in .d.ts . These files describe the various interfaces and even work for even for JavaScript .js files. You can sometimes also find the type definitions files in the @types\somemodule repo. DefinitelyTyped/DefinitelyTyped The repository for high quality TypeScript type definitions. - DefinitelyTyped/DefinitelyTypedgithub.com Using this file typescript can auto complete on things imported from JavaScript files. Even for files imported using JSPM: // Import the fast-xml-parser library import fastXMLParser from "https://dev.jspm.io/fast-xml-parser"; // Import the type definition file from the source code of fast-xml-parser import * as FastXMLParser from "https://raw.githubusercontent.com/NaturalIntelligence/fast-xml-parser/master/src/parser.d.ts"; *// Use the parser with the types const* parser = fastXMLParser as typeof FastXMLParser; I import the type definitions from the definition files as FastXMLParser (note the uppercase F) this doesn’t contain any working code but is an object which has the same type as the code we want to import. I import the code from JSPM as fastXMLParser (lowercase f) which is the working code but has no types. Next I combine them together to make parser which is fastXMLParser with the type of FastXMLParser . Thank you for reading, I hope you give deno a go. The ability to use any module made for the web and even some which were made for node/npm really gives this new server side library ecosystem a good foundation to get started from. View the full blog at its source
-
A bad practice but sometimes there is no alternative. Last time we introduced about Deno and discussed how it compares to node, like node, Deno is a server side code-execution environment based on web technology. Node uses JavaScript with commonjs modules and npm/yarn as it’s package manager. Deno uses Typescript or JavaScript with modern javascript import statements. It does not need a package manager. To import a module as usual in deno you reference it by URL: import { serve } from "https://deno.land/std/http/server.ts"; You can find many of the modules you may need in the Deno standard library or in the Deno third party modules list but they don’t have everything. Sometimes you need to use a module which the maintainers have only made available through the npm ecosystem. Here are some methods from most convenient to least: 1. If the module already uses ES modules import/export syntax. The libraries you use from deno don’t have to come from the recommended Deno packages they can come from any URL, provided they use the modern import syntax. Using unpkg is a great way to access these files directly from inside an npm repo. import throttle from [https://unpkg.com/[email protected]/throttle.js](https://unpkg.com/[email protected]/throttle.js) 2. If the module itself doesn’t use imports but the source code does If the module is compiled or in the wrong format though npm you may still have some luck if you take a look at the source code. Many popular libraries have moved away from using commonjs in their source code to the standards compliant es module import syntax. Some packages have a separate src/ and dist/ directory where the esmodule style code is in src/ which isn’t included in the package available through npm. In that case you can import from the source directly. import throttle from "https://raw.githubusercontent.com/lodash/lodash/master/throttle.js"; I got this URL by clicking on the “raw” button on github to get the raw JS file. It’s probably neater to use a github cdn or to see if the file is available through github pages, but this works. NB: Some libraries use esmodules with webpack, or a module loader which lets them import from node modules like this: Bad: import { someFunction } from "modulename"; import { someOtherFunction } from "modulename/file.js"; The standard for imports is that they need to start with ./ or be a URL to work Good: import { someOtherFunction } from "./folder/file.js"; In that situation try the next method: 3. Importing commonjs modules Fortunately there is a service called JSPM which will resolve the 3rd party modules and compile the commonjs modules to work as esmodule imports. This tool is for using node modules in the browser without a build step. But we can use it here too. The JSPM logo In my most recent project i wanted to do push notifications, which involves generating the credentials for VAPID, there is a deno crypto library which can do encryption but doing the full procedure is difficult and I’d rather use the popular web-push library. I can import it using the JSPM CDN using the URL like below: import webPush from "https://dev.jspm.io/web-push"; I can now use it like any other module in deno. This almost worked 100% some of the bits which relied on specific node behaviors such as making network requests failed in this situation I had to work around this to use the standardised fetch API deno uses. Getting Typescript types working One nice feature of typescipt, which deno uses, is that it provides really good autocomplete for modules. The deno extension for my editor even can autocomplete for third part modules if it knows the type definitions. This isn’t essential to getting the code to work but can provide huge benefits for helping you maintain your code. When I was importing another module called fast-xml-parser when I was looking through the source code I noticed it had a type definitions file which is a file which ends in .d.ts . These files describe the various interfaces and even work for even for JavaScript .js files. You can sometimes also find the type definitions files in the @types\somemodule repo. DefinitelyTyped/DefinitelyTyped The repository for high quality TypeScript type definitions. - DefinitelyTyped/DefinitelyTypedgithub.com Using this file typescript can auto complete on things imported from JavaScript files. Even for files imported using JSPM: // Import the fast-xml-parser library import fastXMLParser from "https://dev.jspm.io/fast-xml-parser"; // Import the type definition file from the source code of fast-xml-parser import * as FastXMLParser from "https://raw.githubusercontent.com/NaturalIntelligence/fast-xml-parser/master/src/parser.d.ts"; *// Use the parser with the types const* parser = fastXMLParser as typeof FastXMLParser; I import the type definitions from the definition files as FastXMLParser (note the uppercase F) this doesn’t contain any working code but is an object which has the same type as the code we want to import. I import the code from JSPM as fastXMLParser (lowercase f) which is the working code but has no types. Next I combine them together to make parser which is fastXMLParser with the type of FastXMLParser . Thank you for reading, I hope you give deno a go. The ability to use any module made for the web and even some which were made for node/npm really gives this new server side library ecosystem a good foundation to get started from. View the full blog at its source
-
In this tutorial, you will learn how to monitor memory usage of a Tizen .NET application and identify possible memory leaks using dotnet-dump and dotnet-gcdump. Note: The total memory usage of an application process is affected by various factors (for example, shared size, swap size, or memory allocated by the runtime for its internal use). Only the managed memory region (GC heap) can be analyzed with dotnet-dump and dotnet-gcdump. Prerequisites You need the following things installed on your device: .NET diagnostic tools (see Installing .NET diagnostic tools on Tizen devices) Target application Monitoring memory usage First, obtain the process ID of the currently running application process. Use dotnet dump ps to list all .NET processes running on the device. sh-3.2$ dotnet counters ps 17876 dotnet-loader /usr/bin/dotnet-loader 17464 LeakMemory.dll /usr/bin/dotnet-loader To examine the current memory usage of the target process, use dotnet counters monitor. sh-3.2$ dotnet counters monitor -p 17464 Press p to pause, r to resume, q to quit. Status: Running [System.Runtime] % Time in GC since last GC (%) 0 Allocation Rate / 1 sec (B) 56,992 CPU Usage (%) 29 Exception Count / 1 sec 0 GC Heap Size (MB) 34 Gen 0 GC Count / 60 sec 0 Gen 0 Size (B) 12 Gen 1 GC Count / 60 sec 0 Gen 1 Size (B) 13,820 Gen 2 GC Count / 60 sec 0 Gen 2 Size (B) 493,068 LOH Size (B) 33,587,792 Monitor Lock Contention Count / 1 sec 0 Number of Active Timers 3 Number of Assemblies Loaded 52 ThreadPool Completed Work Item Count / 1 sec 61 ThreadPool Queue Length 0 ThreadPool Thread Count 2 Working Set (MB) 89 In this tutorial, we are only interested with the managed heap size (GC Heap Size) of the process. (cf. Working Set indicates the total bytes of memory used by the process.) If the heap size unexpectedly grows over time, it is likely that your application has a memory leak. Analyzing managed heap dump with dotnet-dump To capture a memory dump (coredump) from the target process, use dotnet dump collect. sh-3.2$ dotnet dump collect -p 17464 -o /home/owner/share/coredump.17464 Writing full to /home/owner/share/coredump.17464 Complete Make sure the target process has write access to the specified path. Also ensure that there's enough space available on the disk (df -h /opt/usr) because the size of the dump is often very large (200+ MB). Otherwise, you will see a file write error (HRESULT: 0x80004005). To analyze the generated coredump, use dotnet dump analyze. sh-3.2$ dotnet dump analyze /home/owner/share/coredump.17464 Loading core dump: /home/owner/share/coredump.17464 ... Ready to process analysis commands. Type 'help' to list available commands or 'help [command]' to get detailed help on a command. Type 'quit' or 'exit' to exit the session. > You can now type any SOS command in the command prompt. For example, clrstack -all provides stack traces of all managed threads. If we want to find managed objects within the GC heap that caused a memory leak, the dumpheap -stat command provides the overall statistics about the managed heap. > dumpheap -stat Statistics: MT Count TotalSize Class Name ... f026e634 60 35556 System.Object[] f026f3b8 30 46038 System.Char[] f026fc3c 245 51356 System.Int32[] f0290744 1531 133922 System.String e3706968 2 16777240 Xamarin.Forms.ContentPage[] The last line reveals that the memory leak is caused by Xamarin.Forms.ContentPage[] type objects. Use the gcroot command to print the chain of references that are keeping those objects alive. > dumpheap -type Xamarin.Forms.ContentPage[] Address MT Size f126391c e38cad40 12 d9c82010 e38cad40 33554444 Statistics: MT Count TotalSize Class Name e38cad40 2 33554456 Xamarin.Forms.ContentPage[] Total 2 objects > gcroot d9c82010 Thread 4438: FF8BF398 F7023CD0 <unknown> ... -> F12637B0 LeakMemory.Views.CircularButtonPage -> F1263908 System.Collections.Generic.List`1[[Xamarin.Forms.ContentPage, Xamarin.Forms.Core]] -> D9C82010 Xamarin.Forms.ContentPage[] Found 1 unique roots (run 'gcroot -all' to see all roots). As shown, the leaky objects are held by a LeakMemory.Views.CircularButtonPage type object. This is the general procedure of identifying major sources of memory leaks in your application. You can continue investigating the coredump using various SOS commands and options to find other underlying issues in your code. Analyzing managed heap dump with dotnet-gcdump An alternative to dotnet-dump is dotnet-gcdump which also allows you to track object allocation and memory leaks from a running application process. GC dumps are often easier to use than coredumps because they are portable (cross-platform format) and lightweight (very small size). Find more information about GC dumps at Collecting and analyzing memory dumps. To capture a GC dump (snapshot) from the target process, use dotnet gcdump collect. You can take multiple snapshots from the same process while it's running. sh-3.2$ dotnet gcdump collect -p 17464 -o /home/owner/share/17464.gcdump Writing gcdump to '/home/owner/share/17464.gcdump'... Finished writing 11101371 bytes. Using Visual Studio You can use Visual Studio to open and analyze the generated GC snapshot. Copy the .gcdump file from the device to the host by typing sdb pull /home/owner/share/17464.gcdump and open it in Visual Studio. By sorting the objects by their types and sizes, List<Xamarin.Forms.ContentPage> appears at the top of the table, which is the main source of the memory leak. The chain of references is also shown in the bottom panel (Paths to Root). If you have more than one snapshot, compare two different snapshots using diff to see which objects grow fast over time. Choose a snapshot that you want to serve as the baseline in the Compare to: section. Using PerfView If the information obtained above is not enough for you, you can switch to another tool called PerfView. At first glance, this tool doesn't look very intuitive, but is extremely helpful for performing complex analysis of managed heap data. Tip: PerfView also supports the trace file format (.nettrace) used by the dotnet-trace tool (see Finding Performance Bottlenecks with dotnet-trace). You can specify detailed provider keywords to capture certain event information (for example, JIT or GC) when recording trace data. By switching between a set of different views and filtering necessary data, you can get detailed information about managed objects in the GC heap. Pressing F1 anywhere opens a pop-up window with the help page for the current view. Also read the following pages for further details of the PerfView tool. Note that some parts of the documents are outdated or not generally applicable for Tizen (PerfView had been Windows-only for a long time before .NET Core was released in 2016). Profiling workflow for dotnet/runtime repository Performance Profiling of .NET Core 3 applications on Linux with dotnet-trace and PerfView View the full blog at its source
-
Start Date Jul 30, 2020 Location Online Los invitamos a conocer cuáles son los tips a tener en cuenta a la hora de desarrollar para la web pero dirigida a dispositivos móviles y cuáles son las diferencias que el programador debe saber a la hora de dirigir tu producto a un browser mobile como Samsung Internet. Daremos introducción a diseño responsive, progressive web apps y otros consejos para crear web apps exitosas en plataformas móviles. View the full blog at its source
-
In this episode of POW, we interview Morgan Parker, Program Manager for the Knox Partner Program, the team at Samsung that provides resources and support for strategic partners building on the Knox platform. Not only do we talk about the benefits of joining the Knox Partner Program, but also just how easy it is to get started. Topics Covered: Samsung Knox Knox Partner Program Samsung Enterprise Alliance Program Samsung Knox SDK Samsung E-FOTA Knox Service Plug-in Knox Mobile Enrollment Support Forums Knox Validated Program Solutions Catalog Mobile Device Management (MDM) Unified Endpoint Management (UEM) Enterprise Mobility Management (EMM) View the full blog at its source
-
In this episode of POW, we interview Morgan Parker, Program Manager for the Knox Partner Program, the team at Samsung that provides resources and support for strategic partners building on the Knox platform. Not only do we talk about the benefits of joining the Knox Partner Program, but also just how easy it is to get started. Topics Covered: Samsung Knox Knox Partner Program Samsung Enterprise Alliance Program Samsung Knox SDK Samsung E-FOTA Knox Service Plug-in Knox Mobile Enrollment Support Forums Knox Validated Program Solutions Catalog Mobile Device Management (MDM) Unified Endpoint Management (UEM) Enterprise Mobility Management (EMM) View the full blog at its source
-
Start Date Jul 27, 2020 Location Online Join this Samsung Developer Program Talk and learn how to reach a new gaming audience by publishing in the Samsung Galaxy Store. The Galaxy Store is a premium store, designed to make Galaxy mobile devices come alive in their own, unique way. Discover how to prepare and submit your Unity3D games to the Galaxy Store. At the end of this talk you will have the knowledge to create the right binary files and assets that are required to submit, and distribute, your first Unity game and ultimately reach the global Samsung audience. If you have knowledge of game development, or are interested in learning how to distribute your upcoming releases, we encourage you to register. This talk will show participants how to: • Create a Samsung Galaxy Store account • Export your game in Unity • Complete the different submission steps in the Galaxy store • Overview of common errors in your game submission • Tips to promote your game View the full blog at its source
-
We can’t guarantee our users have a good internet connection but we can still be helpful when they don’t. In ideal conditions the user will always maintain a good connection to the web but things are seldom ideal. Fortunately since we’re been building a web app we have a service worker which has the capability of caching network responses. If the network fails or takes too long to respond we can then use these cached responses to show the user the page they were looking for, letting people continue to use the app despite not being connected. Unfortunately our cache isn’t always perfect. Sometimes the user will be trying to go to a page which hasn’t been cached yet. If we haven’t anticipated this we may see the dreaded no connection message: Fortunately we are very smart developers [citation needed] and can show a branded offline page. So the user still feels like they are using our web app when the connection is lost. here are some examples: These are great for maintaining a consistent user experience during network failures which is the expected behaviour of a native app. These pages can do even more though, they can be used to provide entertainment such as The Guardian’s developer blog providing a crossword on their offline page. Which unfortunately I can’t find a live version of any more. The Guardian’s crossword offline page. A useful offline page for almost any Web App I’m going to propose, and build, a feature which should be useful to many apps and websites and would make your app still partly usable whilst your offline. This is to show a lit of relevant cached pages to the user: This example app is an RSS Feed reader. Where the user can read an RSS feed at a URL like so: /feed/?url=https://ada.is/feed This app is rendered on the server so it returns all the information in the HTML page, these pages get cached by the service worker. If your app uses JSON to populate pages on the client side this technique still works as long as you cache both the JSON responses and the pages which show them. This is a common pattern in many Web Apps and will work as long as you have pages cached. Step 1. Be prepared, by pre-caching the offline page Firstly we need to store the offline page, when the app starts. To do this I had the HTML file /offline/ and it’s resources /offline.js cached as soon as the app starts, by populating the cache during the service worker’s install event. const CACHE_NAME = "DENORSS-v1.0.0"; self.addEventListener("install", (event) => { event.waitUntil( caches .open(CACHE_NAME) .then((cache) => cache.addAll(["/", "/offline/", "/offline.js"]) ) .then(self.skipWaiting()) ); }); Step 2. Show the offline page Then when the user tries to navigate to a page we do not have we can show that cached /offline/ page. Our existing code first tried to respond with a live page, if that failed it would try retrieving the page from cache, if that fails instead of just failing and showing the browser error message we instead respond with the offline page. // Try showing the offline page if it's a navigation if (event.request.mode === "navigate") { const offlinePage = await caches.match("/offline/"); if (offlinePage) return offlinePage; } Step 3. Getting a list of cached pages This now shows the offline page when there is no alternative. Now lets provide a list of cached pages the user might like to read instead. Like in the example below. The first step we need to do is to open the web apps caches to find pages we want to access: const cacheKeys = await window.caches.keys(); const caches = await Promise.all( cacheKeys.map((cacheName) => window.caches.open(cacheName)) ); This gives us an array of caches. Next we want to find all of the cached pages from those caches, this works by using cache.matchAll with ignoreSearch: true to find all cache results from the /feed/ endpoint. const results = await Promise.all( caches.map((cache) => cache.matchAll("/feed/", { ignoreSearch: true, }) ) ); I only looked at the /feed/ end point because I felt that pages like /search/ with search results or the error pages like /404.html would not be useful to users and main pages like the home page / are already linked to in the navigation bar. Our results returns an array of arrays for the results from each cache. We will flatten this and then handle each cached response: results.flat().forEach(async (response) => { // Code goes here }); We only want to get the useful pages to the users so we will look at the query parameters to find only the pages are interesting. For our example they are requesting an RSS feed via the url parameter. const params = new URLSearchParams(new URL(response.url).search); const urlParam = params.get('url'); if (!urlParam) return; If there is no url query parameter, it’s not interesting so we won’t show it. Step 4. Rendering the list We have the URLs of the pages now and the raw query parameters but that won’t look very good for users. We can get some better labels to show to users by looking at the cached content itself. To get the data out of the response we need to get the text of the response: const dataAsString = await response.text(); If your data is stored as JSON then a JSON.parse should be enough to retrieve any interesting information such as a good page title. const data = JSON.parse(dataAsString); const title = data.title; For our example website, since it is server side rendered it uses HTML so I will parse the HTML instead, fortunately web browsers are good at HTML parsing. We will turn our raw text into a document fragment which can be queried using the usual DOM methods. In this example we read the text in the <title> tag. Other good elements to query would be <h1> or <h2> to get the first header in the document. const html = document .createRange() .createContextualFragment(dataAsString); const title = html .querySelector("title") .textContent.trim(); We use this title and the response URL to generate a link we can append to the list element to make a list of pages. el.insertAdjacentHTML( "beforeend", `<li><a href="${response.url}">${title}</a></li>` ); Here is a gif of it working, this was recorded with Chrome emulating an offline network connection: Thanks for reading and hope this helps. View the full blog at its source
-
We can’t guarantee our users have a good internet connection but we can still be helpful when they don’t. In ideal conditions the user will always maintain a good connection to the web but things are seldom ideal. Fortunately since we’re been building a web app we have a service worker which has the capability of caching network responses. If the network fails or takes too long to respond we can then use these cached responses to show the user the page they were looking for, letting people continue to use the app despite not being connected. Unfortunately our cache isn’t always perfect. Sometimes the user will be trying to go to a page which hasn’t been cached yet. If we haven’t anticipated this we may see the dreaded no connection message: Fortunately we are very smart developers [citation needed] and can show a branded offline page. So the user still feels like they are using our web app when the connection is lost. here are some examples: These are great for maintaining a consistent user experience during network failures which is the expected behaviour of a native app. These pages can do even more though, they can be used to provide entertainment such as The Guardian’s developer blog providing a crossword on their offline page. Which unfortunately I can’t find a live version of any more. The Guardian’s crossword offline page. A useful offline page for almost any Web App I’m going to propose, and build, a feature which should be useful to many apps and websites and would make your app still partly usable whilst your offline. This is to show a lit of relevant cached pages to the user: This example app is an RSS Feed reader. Where the user can read an RSS feed at a URL like so: /feed/?url=https://ada.is/feed This app is rendered on the server so it returns all the information in the HTML page, these pages get cached by the service worker. If your app uses JSON to populate pages on the client side this technique still works as long as you cache both the JSON responses and the pages which show them. This is a common pattern in many Web Apps and will work as long as you have pages cached. Step 1. Be prepared, by pre-caching the offline page Firstly we need to store the offline page, when the app starts. To do this I had the HTML file /offline/ and it’s resources /offline.js cached as soon as the app starts, by populating the cache during the service worker’s install event. const CACHE_NAME = "DENORSS-v1.0.0"; self.addEventListener("install", (event) => { event.waitUntil( caches .open(CACHE_NAME) .then((cache) => cache.addAll(["/", "/offline/", "/offline.js"]) ) .then(self.skipWaiting()) ); }); Step 2. Show the offline page Then when the user tries to navigate to a page we do not have we can show that cached /offline/ page. Our existing code first tried to respond with a live page, if that failed it would try retrieving the page from cache, if that fails instead of just failing and showing the browser error message we instead respond with the offline page. // Try showing the offline page if it's a navigation if (event.request.mode === "navigate") { const offlinePage = await caches.match("/offline/"); if (offlinePage) return offlinePage; } Step 3. Getting a list of cached pages This now shows the offline page when there is no alternative. Now lets provide a list of cached pages the user might like to read instead. Like in the example below. The first step we need to do is to open the web apps caches to find pages we want to access: const cacheKeys = await window.caches.keys(); const caches = await Promise.all( cacheKeys.map((cacheName) => window.caches.open(cacheName)) ); This gives us an array of caches. Next we want to find all of the cached pages from those caches, this works by using cache.matchAll with ignoreSearch: true to find all cache results from the /feed/ endpoint. const results = await Promise.all( caches.map((cache) => cache.matchAll("/feed/", { ignoreSearch: true, }) ) ); I only looked at the /feed/ end point because I felt that pages like /search/ with search results or the error pages like /404.html would not be useful to users and main pages like the home page / are already linked to in the navigation bar. Our results returns an array of arrays for the results from each cache. We will flatten this and then handle each cached response: results.flat().forEach(async (response) => { // Code goes here }); We only want to get the useful pages to the users so we will look at the query parameters to find only the pages are interesting. For our example they are requesting an RSS feed via the url parameter. const params = new URLSearchParams(new URL(response.url).search); const urlParam = params.get('url'); if (!urlParam) return; If there is no url query parameter, it’s not interesting so we won’t show it. Step 4. Rendering the list We have the URLs of the pages now and the raw query parameters but that won’t look very good for users. We can get some better labels to show to users by looking at the cached content itself. To get the data out of the response we need to get the text of the response: const dataAsString = await response.text(); If your data is stored as JSON then a JSON.parse should be enough to retrieve any interesting information such as a good page title. const data = JSON.parse(dataAsString); const title = data.title; For our example website, since it is server side rendered it uses HTML so I will parse the HTML instead, fortunately web browsers are good at HTML parsing. We will turn our raw text into a document fragment which can be queried using the usual DOM methods. In this example we read the text in the <title> tag. Other good elements to query would be <h1> or <h2> to get the first header in the document. const html = document .createRange() .createContextualFragment(dataAsString); const title = html .querySelector("title") .textContent.trim(); We use this title and the response URL to generate a link we can append to the list element to make a list of pages. el.insertAdjacentHTML( "beforeend", `<li><a href="${response.url}">${title}</a></li>` ); Here is a gif of it working, this was recorded with Chrome emulating an offline network connection: Thanks for reading and hope this helps. View the full blog at its source
-
Start Date Jul 23, 2020 Location Online Join Samsung Evangelist Tony Morelan and special guest, Andrew Zanella from Jibber Jab Reviews, as they talk YouTube strategies to market apps and other content. With over 6 million views, Jibber Jab Reviews is the leading channel on YouTube dedicated to promoting apps and content in the Galaxy Store. Join the conversation and receive live support from the pros! View the full blog at its source
-
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
-
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
-
In this tutorial, you will learn how to profile a Tizen .NET application during startup to identify major performance issues using dotnet-trace. Prerequisites First, install the following things on your device: .NET diagnostic tools (see Installing .NET diagnostic tools on Tizen devices) Target application (building an application in Debug mode may affect the result of profiling; make sure to build your application in Release mode) Find loader process ID A Tizen application is generally hosted by a pre-created process called loader. A loader process is automatically created by the system when it's in an idle state. To check if there is a free loader process running on your device, use dotnet trace ps. sh-3.2$ dotnet trace ps 3295 dotnet-loader /usr/bin/dotnet-loader If a loader process is not found, install and run any .NET application on the device and try again. Stack sampling Using the process ID (PID) of the loader process you obtained in the previous step, you can collect the process's diagnostic trace using dotnet trace collect. -p PID: Target process ID --format Speedscope: Convert to the speedscope format -o PATH: Output file path (.nettrace) sh-3.2$ dotnet trace collect -p 3295 --format Speedscope -o /home/owner/share/3295.nettrace No profile or providers specified, defaulting to trace profile 'cpu-sampling' Provider Name Keywords Level Enabled By Microsoft-DotNETCore-SampleProfiler 0x0000000000000000 Informational(4) --profile Microsoft-Windows-DotNETRuntime 0x00000014C14FCCBD Informational(4) --profile Process : /usr/bin/dotnet-loader Output File : /home/owner/share/3295.nettrace [00:00:00:01] Recording trace 32.707 (KB) If you see an output similar to the example above, launch an application from which you want to collect a trace (if the application is already running, terminate it before starting the trace). After the application launches completely, stop tracing by pressing Enter. [00:00:00:01] Recording trace 32.707 (KB) Stopping the trace. This may take up to minutes depending on the application being traced. Trace completed. Writing: /home/owner/share/3295.speedscope.json Conversion complete A .speedscope.json file is generated in the output directory. Caution: You should have a write access to the specified output directory. Creating a file in an arbitrary directory may be denied by the SMACK security policy. The recommended output location is /home/owner/share. Analyzing the result The .speedscope.json file can be opened with a web-based tool called speedscope. First copy the file from the device to the host by running sdb pull /home/owner/share/3295.speedscope.json, and import the file in the browser at https://www.speedscope.app. In the viewer, you can see: Execution order of your application code Time-consuming methods and hot paths Costly work that can be lazily done after drawing the initial screen of the app Which thread is used to run an async Task at runtime and how long it lasts etc. Notice that the trace shows call paths for not only your own code but also external code. If you see any performance issues related with the external code, you should identify if it's your code misusing the external library, or the library itself has a defect or performance limitations. To learn more about the speedscope viewer, check out the following pages. jlfwong/speedscope Profiling .NET Code with PerfView and visualizing it with speedscope.app Note: dotnet-trace collects thread stack information on a sampling basis. The default sampling interval is 1 ms. Some very short-running methods may not be recorded correctly. Note: Native (unmanaged) callstacks (including P/Invoke frames) cannot be recorded by dotnet-trace. Using PerfCollect to trace native code execution is also not supported on Tizen. View the full blog at its source
-
Tizen 5.5 comes with support for a new sdb shell CLI command called dotnet. The command is for use by application and platform developers for advanced testing and debugging scenarios. Note: You cannot use the dotnet command when developing for TV devices (missing sdb shell support). Tip: To see which version of Tizen your device runs on, enter sdb capability and find the platform_version value. Note: If you have ever installed the .NET SDK on Windows or macOS/Linux, you may have some knowledge about the dotnet command provided by the SDK. However, dotnet on Tizen is not a variant of the .NET SDK CLI and has a smaller number of supported features. The following options are currently available with the dotnet command on Tizen 5.5. sh-3.2$ dotnet -h Execute a .NET application or command. Usage: dotnet [options] [path-to-executable] [arguments] Usage: dotnet [command] [arguments] Options: -h, --help show this help message --clr-path <path> path to libcoreclr.so and runtime assemblies --tool-path <path> path to the tool installation directory --additionalprobingpath <path> path containing assemblies to probe for --globalizationinvariant run in globalization invariant mode Commands: counters monitor or collect performance counters dump capture or analyze a coredump gcdump capture a heapdump trace collect or convert a diagnostic event trace Running a console application To execute a .NET application from the command line, use dotnet or dotnet exec with an assembly (.dll) name. Note: .runtimeconfig.json and .deps.json files are not required. dotnet automatically resolves dependencies from the executing directory. $ sdb push MyAssembly.dll /home/owner/share $ sdb shell sh-3.2$ cd /home/owner/share sh-3.2$ dotnet MyAssembly.dll Installing and invoking a global tool A tool is a special kind of console application which can be installed as a development add-on. Most tools use the dotnet-* prefix as a naming convention. Microsoft has developed a set of tools which can be used for runtime diagnostics (for example, performance evaluation and problem analysis). The tools are maintained and published through the dotnet/diagnostics repo in GitHub. The currently available tools include: dotnet-counters dotnet-dump dotnet-gcdump dotnet-trace To install the above tools on Tizen, follow these steps: Download the latest release of pre-built diagnostics tools (.tar.gz) from the tizendotnet/diagnostics repo. Copy the files to your device's /home/owner/share/.dotnet/tools directory. $ sdb push [.tar.gz] /home/owner/share $ sdb shell sh-3.2$ cd /home/owner/share sh-3.2$ mkdir -p .dotnet/tools sh-3.2$ tar -zxvf [.tar.gz] -C .dotnet/tools Note: The dotnet tool install command is not supported by dotnet on Tizen. If you have installed the tools successfully, launch them using the dotnet [name] command (omit - in the name). sh-3.2$ dotnet dump -h Usage: dotnet-dump [options] [command] Options: --version Display version information Commands: collect Capture dumps from a process analyze <dump_path> Starts an interactive shell with debugging commands to explore a dump ps Lists the dotnet processes that dumps can be collected Otherwise, you will see the following error message. sh-3.2$ dotnet hello Could not execute because dotnet-hello does not exist. Go to https://developer.samsung.com/tizen to learn how to install tools. For more usage and examples, click on the links in the Installing an invoking a global tool section. View the full blog at its source
-
Adding Augmented Reality to your Websites
Samsung Newsroom posted a topic in Samsung Developer Forum
Samsung Internet 12.1 Beta adds support for Augmented Reality — here’s how to try it out today Last week we told you about our latest Beta, 12.1, which offers a host of quality-of-life improvements for end users. We’re also really glad to announce that with this beta we are also shipping modules for the WebXR Device API that enable Augmented Reality (AR) content to be built right in the browser: including the “hit test” module. Hit testing allows you to detect the position of the real world at a single point on the screen which can be used correctly position virtual objects in the real world. One of the reasons we’re especially excited about this is because Samsung Internet have been playing a leadership role in developing the WebXR spec in W3C, along with many other companies and organizations. You can try AR out for yourself using the XR Dinosaurs demo to place a dinosaur in your environment: Step 1. Download the Samsung Internet Beta from the Play Store or the Galaxy Store: Step 2. Go to https://xrdinosaurs.com and choose Augmented Reality When you run this demo you will see this message, this means that the demo is able to place the virtual objects onto your environment but it cannot actually record the camera feed so you don’t have to worry about it recording what you are doing. Step 3. Select a place on the floor to place the dinosaur XR Dinosaurs was built by Brandon Jones (Tojiro) using THREE.js. Making your own AR Web Sites This method of AR uses the Augmented Reality features of the WebXR Device API. Here is a sample project you can use to help you get started: A-Frame Hit Test Demo *Remix to make your own augmented reality scenes.*hit-test.glitch.me Snapshot of the scene To make your own press the fish button then the remix on glitch button: How to remix the app It shows a 3D object and some basic shapes around and lets the user reposition them as they need. You can then add interactivity or other models and 3D shapes to the scene. Once the user enters VR a Reticle is used to select the location to place the objects. The hit-test API casts ray out from the center of the screen and works out that real world position and places the reticle there. Once the user taps the screen it then places the objects in the scene. If you want to hide an object in AR at the hide-in-ar-mode attribute. It will make objects in visible when AR gets turned on. In the demo this has been done for the ‘a-sky’ element and the ‘world’ element. The world element contains the objects. When the user enters AR we make it invisible so it’s not floating in the air, we make it visible again once the user has selected the location. I hope this helps you have fun adding Augmented Reality to your Websites. Please send us your feedback and let us know if you have any questions, either via Twitter or on our developer forum. View the full blog at its source -
Continuando la serie de charlas en vivo de Samsung en Español , hoy les traemos el video de la más reciente conversación entre nuestros desarrolladores evangelistas Laura Morinigo (Developer Advocate / Principal Engineer @Samsung Internet) y Diego Lizarazo (Sr. Developer Evangelist @Samsung Electronics of America). Esta vez nuestro Diego se encargó de dar una introducción al desarrollo de aplicaciones para los relojes inteligentes de Samsung, y las diferentes ventajas de desarrollar con Tizen. En esta charla, completamente en castellano, los participantes hablaron directamente con nuestros expertos y plantearon todas tus dudas sobre cómo desarrollar tus aplicaciones para el mercado global de Samsung. Aquí puedes ver el video de toda la charla: Ya estamos trabajando en los temas para una nueva charla en el mes de Julio. Aprovecha la oportunidad para proponer nuevos temas y preguntas para esta y futuras charlas, puedes escribirnos a [email protected] Puedes conectar con nuestros desarrolladores evangelistas aquí: Laura Morinigo: https://twitter.com/thisislalaok Diego Lizarazo: https://twitter.com/hielo777 Recuerda que este es un espacio para hablar con los expertos y otros desarrolladores sobre tus creaciones y para aprender más sobre la tecnología Samsung, así que te esperamos en Julio con nuevos temas y anuncios. View the full blog at its source