“Never lose important stuff!” is the motto of our new in-house product called Pastiche.
Designed for the Samsung Edge series, Pastiche is a side-panel clipboard history manager that keeps all of your important things in one convenient place – an extract you’ve copied from an amazing read and forgotten to paste in Evernote, a link to a funny cat video that you were going to drop in your BFF chat this morning, or maybe some important date that you grabbed while chatting with your team on Skype. Everything you copy on your phone will automatically be saved to Pastiche and stay there as long as you need it.
Now that our Pastiche side-panel app has passed the mark of 76,000 installations in the Samsung App Store (and the number is growing), we think it’s time to share the story of its creation with you. Who knows, maybe it will give you some inspiration to create your own project. We’re also going to reveal some of our plans for the future of the application.
How was Pastiche born?
Last summer, Samsung Electronics Ukraine announced the launch of its developer contest with the high-sounding name Samsung UA Inside and an imposing prize fund totalling one million Ukrainian hryvnias.
There were three categories that developers could challenge themselves in – Android OS, Samsung Gear (namely, Samsung’s Gear S2 smartwatch running the Tizen OS), and Samsung Gear VR (a mobile virtual reality headset powered by Oculus). The task was to develop a unique application for one of these platforms. Moreover, this application had to include some Ukrainian-themed elements (however, we failed to fulfill this condition).
We had less than three months to come up with, create, and release our product.”
This all sounded very intriguing and exciting, so we decided to participate. We applied for the contest, and our next step was to gather a team and come up with an idea for our future app.
“If memory serves, Samsung held a formal briefing at the beginning of July. That’s how I found out that the application had to be released by the end of September 2016,” says Kyrylo Penzykov, one of our Android developers and the father of our Pastiche. “So we had less than three months to come up with, create, and release our product,” adds Kyrylo.
We quickly gathered a project team, which included four developers, four designers, and one QA engineer, and started thinking on the idea. First, we thought it would be nice to develop something like a digital tour guide so it would be possible to discover the history of Ukraine right from your Samsung smartphone. But we quickly realized that such an app would require a lot of time and resources, and we’d simply fail to deliver it on time. So we picked another category – Android OS.
By the rules of the contest, our future Android app had to support at least one of the following features – S Pen, MultiWindow, or Look (Edge). After a brief brainstorming session, we came up with the idea of an Android clipboard history app that resides on the Samsung Edge side panel and, thus, makes use of the Look feature. That’s how Pastiche was born.
Features, possibilities, and future plans
The main point was to create a clipboard history manager for Android that would save all the things that you copy on your phone so you have quick access to them via the Edge panel. Moreover, we wanted users to be able to manipulate (share, search, delete, and so on) these notes right in the application.
The first version of the app was designed and developed by Anatoly Nesterov and Alexey Chernenko, our designer and Android developer respectively. Every time a user copies an element, it is saved to a database and displayed in the clipboard.
[Pastishe - Working with text]
For now, Pastiche works with several types of data – text, links, emails, phone numbers, and dates. You can swipe left to check what’s in your Pastiche. You have to tap on a card if you want to copy, share, or delete a saved item. However, that’s not all…
Everything you save to your Partiche is active: you can tap on an email address to write a message; tap on a link to open it in the browser; tap on a date to open it in the calendar and create an event; or tap on a phone number to call or send a text. This all is possible without leaving Pastiche.
Users can also see link previews and minimize and maximize cards (long texts, for example). They can also set a desired number of items to be saved in the panel.
In our recent update (June 2017), users saw a smoother and more friendly app design. But new upgrades are yet to come. For example, we want to add search via Baidu (at the request of our Chinese users) and other search engines. We’re also planning to add night mode, so the app looks more appealing (and mysterious) at night. Another feature on our list of updates is “Favorite Items,” which will allow users to pin their favorite notes, making them stay afloat over other cards.
[Pastiche - The Night View mode]
Another, and perhaps the most important, plan is to provide a clear and comprehensive onboarding experience to help our users understand how the app works. So far, this is the most burning issue that we’re trying to fix.
Finally, we want to create a standalone Samsung mobile app with wider functionality. This will duplicate all the saved items from the Pastiche panel and let users edit their notes. It will also be nice to create Pastiche versions for other devices and operating systems, but these are plans for the long run.
Challenges and wins
To be honest, we’d never developed something like Pastiche before. What’s more, this was our first experience building a product for the Samsung Galaxy App Store. We should say it was very exciting... and challenging at the same time. Why?
First, because of poorly written and organized developer documentation. It sometimes was hard to understand how to use the Look SDK. Moreover, in its manual, Samsung used Eclipse (which is now archaic) as an example of an IDE that developers are meant to work with. Sadly, this manual was the only source we could rely on when developing our application. Nevertheless, using our rich experience and exhaustive manual testing, we overcame this challenge.
One of the most tricky moments was the interaction with the Edge Panel. From the technical perspective, the Edge Panel is almost the same as the App Widget, which is built purely on
RemoteViews. The Edge Panel caused some inconvenience since every action had to be completed with the
PendingIntent. It also restricts the responsiveness of an app and limits its abilities to be customized. Moreover, the panel width is limited, as are the list of views we could use.
[Pastiche - SlookCocktailProvider]
To enable interactions with the panel, we used the
SlookCoctailProvider, which is the child of the
BroadcastReceiver. We also used the
RemoteViewService to interact with the panel’s content. By overriding its callbacks, we can update the list of items when necessary.
Another tricky thing was to configure the lifecycle of the background
service that would keep an ear out for clipboard updates. Without the proper operation of this service, the application would have simply been pointless. Since the operating system doesn’t like when it’s populated by various kinds of background services, it tries to kill them every time they occur. We needed to assure the system that we needed our service, and needed to “resurrect” it if it was removed.
We decided against the approach with non-killable notifications, as it turned out to be really annoying. Instead, to keep the service alive, we used an easier solution: we had the
BroadсastReceiver, declared in the manifest, listen for when the Clipboard Service is destroyed; this receiver is meant to recreate the Clipboard Service after it receives a message that a destroy event has happened. It also recreates the service upon restarting the app. We also check the service status when a user interacts with a panel or its settings. That’s it!
[Pastiche - RemoteViewsService]
As for the publishing process, submitting an app to the Galaxy App Store turned out to be not that easy of a process as well. If your app is lucky enough, the approval process may take no more than a week. In the worst case scenario, however, you may wait for around a month until your product is checked and approved. On the other hand, thanks to such long and thorough testing on Samsung’s side, you can be sure that your application will be polished to perfection. Chances are it will see the world with zero bugs in it, which is a great success we guess.
There were other positive moments too. For instance, while getting through this tiresome approval process, we had the chance to master the Remote Test Lab, Samsung’s special service that enables developers to remotely access real test devices via the internet. Due to this service, we were able to detect and fix a bug associated with the Samsung Galaxy S8 and its new OS update.
For now, Pastiche is integrated with Tutela, which is a service that lets developers earn money from their apps without using in-app ads or in-app purchases – so-called Wireless Analytics Monetization technology.
What does Tutela do? It crowdsources anonymous usage data from the background of your app without bothering users and without affecting the user experience. This data is vital for telecom services, so they’re willing to pay millions of dollars for it. With Tutela integrated with your app, your potential annual revenue could reach up to $3 million. But the problem is that to earn this money, you should have at least 10,000 daily active users. For now, we have only 1,000.
Currently, we’re trying to come up with another soft-sell monetization strategy. One option is to integrate in-app ads. Even though it would steal some space from the panel, we think it would still look neat. Additionally, we would provide subscriptions to turn off these advertisements.
To wrap up
Pastiche is written in Java, using Realm as a database; continuous integration and deployment were done using GitLab CI and Fabric; crash reporting was done using Crashlytics; we also used Google Analytics for Firebase as an additional source for statistics (alongside Fabric Answers).
See you on the Samsung App Store!