Skip to main content

Posts

Showing posts from 2018

App Store Connect now allows to transfer apps supporting auto-renewable subscriptions as well

Apps that offer auto-renewable subscriptions Apps that offer auto renewable subscriptions must use an app-specific shared secret. Initiate an app transfer Before initiating a transfer for an app that offers auto-renewable subscriptions, generate an app-specific shared secret. Then, share the code with the user of the developer account you are transferring the app to. After sharing the code, initiate the app transfer. Accept an app transfer Before you accept an app transfer for an app that offers auto-renewable subscriptions, obtain the app-specific shared secret from the initiator, so that you can update your servers to use the code to verify auto-renewable subscriptions. Once the app transfer is complete, generate an app-specific shared secret so that users outside of your organization no longer have access to it. Important notice for Push-enabled apps: Push notifications apps Associated client SSL certificates for push notifications aren’t transferred. If the app uses App...

Cheat sheet for working with iOS, iTunes, AppStore auto-renewables or Android, GooglePlay subscriptions

How to test auto-renewable subscriptions on iOS and Android? Test purchases Sandbox Live iOS Sandbox account TestFlight internal/external Android License testing group via Alpha Channel Release Management > App releases > Manage Alpha > Manage testers License testing account via Alpha/Internal Channel Settings > Account details > Gmail accounts with testing access Reduced test subscription time Test subscriptions renew more quickly than normal to aid in testing. The following table identifies the testing renewal times for subscriptions of various durations. Note: Test subscriptions will renew a maximum of 6 times. iOS AppStore Connect Note: Test subscriptions will renew a maximum of 6 times; after that you can continue testing with the user. Actual Duration Test Duration 1 week 3 minutes 1 month 5 minutes 2 months 10 minutes 3 months 15 minutes 6 months 30 minutes 1 year 1 hour Android Google Play ...

iOS-factor by krausefx - A blueprint for setting up a maintainable iOS project

iOS-factor was inspired by the famous twelve-factor app framework, a methodology to write high-quality web services. iOS-factor uses the same structure and similar principles, re-written and applied to the iOS app development processes. Topics covered: Dependencies Config Dev/prod parity Deployment Prefer local over remote Backwards compatible APIs App versioning Persistence of data Great read even to improve your existing setup! iOS-factor I would add some words about testing unit tests UI tests device farms continuous integration A/B-Testing Monitoring & Alarming Tracking We are using Travis CI , but I would recommend havva look at Google Firebase and Microsoft App Center as well!

Building AR/VR with Javascript and HTML

A comprehensive resource list for building engaging Augmented and Virtual Reality experiences using Web technologies Starting the journey — Getting to know the VR world Rendering 3D content on the web A-Frame — VR for the people Augment your skills AR.js, aframe-ar, aframe-xr AR.js AR.js provides both an A-Frame and a three.js extension that allows building marker-based AR scenes. AR.js was built with WebGL and WebRTC, so it’s the only one of the three that works with almost every smartphone, regardless of its OS version. If you want to play with AR.js, check out Akash Kuttappa’s article . Or Goldfus Check further examples by jeromeetienne on GitHub .

Working natively with JavaScript in iOS and Android without WebView

Using JavaScript code from native code without using a WebView (sic!) can be really useful to introduce dynamic functionality that was updatable without need of updating the app shorter iteration cycles share code between backend and native iOS and Android apps You can have business logic provided by a JavaScript that then controls the app that inject native functionality in the JavaScript context. You could even write an A/B testing framework based on this approach. iOS iOS offers the native JavaScriptCore: Evaluate JavaScript programs from within an app, and support JavaScript scripting of your app. So you can evaluate a script and read its return value natively: context.evaluateScript(myLib); let result = context.evaluateScript("myFunction();") let myFunction = context.objectForKeyedSubscription("myFunction"); let parametrizedResult = myFunction.invokeMethod(...) Or you can inject a native object into the JavaScript engine: @objc protoco...

Harvard: Open Plan Offices Are Now the Dumbest Management Fad of All Time

It's Official: Open Plan Offices Are Now the Dumbest Management Fad of All Time A new study from Harvard showed that when employees move from a traditional office to an open plan office, it doesn't cause them to interact more socially or more frequently. Instead, the opposite happens. They start using email and messaging with much greater frequency than before. In other words, even if collaboration were a great idea (it's a questionable notion), open plan offices are the worst possible way to make it happen. Previous studies of open plan offices have shown that they make people less productive, but most of those studies gave lip service to the notion that open plan offices would increase collaboration, thereby offsetting the damage. The Harvard study, by contrast, undercuts the entire premise that justifies the fad. And that leaves companies with only one justification for moving to an open plan office: less floor space, and therefore a lower rent. Inc.com Resear...

Clean your GIT history from huge blobs and password files

BFG Repo-Cleaner The BFG is a simpler, faster alternative to git-filter-branch for cleansing bad data out of your Git repository history: Removing Crazy Big Files Removing Passwords, Credentials & other Private data The git-filter-branch command is enormously powerful and can do things that the BFG can't - but the BFG is much better for the tasks above, because: Faster : 10 - 720x faster Simpler : The BFG isn't particularily clever, but is focused on making the above tasks easy Beautiful : If you need to, you can use the beautiful Scala language to customise the BFG. Which has got to be better than Bash scripting at least some of the time. Links rtyley   GitHub Using BFG Repo Cleaner tool to remove sensitive files from your git repo  IBM git-filter-branch details on git-scm.com

TechLead: React Native vs Flutter vs WebView - Hybrid Mobile App Development for 2018

Topics covered: Xamarin, Cordova, Flutter, Titanium, React Native, Flutter React Native Web Views Native Development: iOS and Android Types of apps: Fully native high interactivity expensive: iOS and Android high interactivity, personalization, performance worth for top 50 apps less and less apps are installed you need to shine to be discovered user picks only best app among similar featured apps Hybrid Technologies Xamarin, Cordova, Flutter, Titanium, React Native, Flutter Be aware of the maturity lock-in effect infrastructure and tooling required might get worst of both world should be incrementable updatable check where it makes sense WebViews only Native App shells: Amazon App, Apple App Store, WeChat Mainly for smaller companies Trending on Google Links: AirBnB is sunsetting its React Native development What’s Next for Mobile at Airbnb Server-Driven Rendering Even though we’re not using React Native, we still see the val...

iOS: LLVM based mutation testing to check your unit test reliability, Android and Kotlin: JVM based mutation testing

LLVM-BASED MUTATION TESTING SYSTEM Several years ago I discovered very powerful technique - Mutation Testing. Since then I was (and still am) dreaming to have a tool which will do the job for languages like C, Objective-C and C++. Now I have confidence in that it can be implemented using LLVM. Outline for this article: overview of mutation testing mutation testing system - proof of concept thoughts on potential implementation of MT system using LLVM LowLevelBits Mutation testing system built on top of LLVM on GitHub. mull-project / mull JVM-BASED MUTATION TESTING PIT is a state of the art mutation testing system, providing gold standard test coverage for Java and the jvm. It's fast, scalable and integrates with modern test and build tooling. PIT Mutation Testing

How to keep apps and a microservice based backend in sync? Read about Pact and consumer-driven-contracts

7 Reasons to Choose Consumer-Driven Contract Tests Over End-to-End Tests In a distributed system, testing the successful integration between distributed services is essential for ensuring that the services won’t fail in production just because they’re not speaking the same language. This article discusses three approaches to implementing integration tests between distributed services and shows the advantages of Consumer-Driven Contract tests. Reflectoring.io Testing a Spring Boot REST API against a Consumer-Driven Contract with Pact Consumer-driven contract tests are a technique to test integration points between API providers and API consumers without the hassle of end-to-end tests. A common use case for consumer-driven contract tests is testing interfaces between services in a microservice architecture. In the Java ecosystem, Spring Boot is a widely used technology for implementing microservices. Pact is a framework that facilitates consumer-driven contract tests. So let’s ...

Team building: "Meme-Your-Colleague"

Lately we were hiring a lot of developers and had to integrate them in our team. So we decided to do an infotainment team event, targeting both: getting to know each other on a personal level and learning about the business and technical state, challenges and visions. Usually a meeting like this starts with everybody telling a few words about themselves... one... after... each... other... and after third speaker latest everybody gets bored. So we came up with the "Meme-Your-Colleague" game: Build teams of two persons Give them half an hour to get to know each other Both have to assemble a five minute presentation of five slides of each other Each slide consists of exactly one meme telling a (fun) fact of that person You may want to use a meme generator  and a presentation tool like Keynote or PowerPoint. It ended up with the whole team having a lot of fun: a perfect ice breaker! Give it a shot!

Deeplinks in apps

Deeplinks in apps are essential to offer a seamless, interleaved experience of the app with E-Mails Websites Push messages Messengers (iMessage, Whatsapp, ...) Supporting external deeplinks prove very useful for Onboarding Marketing Sales Re-activation of users ...that all can independently work on their subjects without having to be supported by the developers (after they created the deeplinks!). Checkout: AirBnB DeepLinkDispatch (Android, 2,862 stars!) joeldev/JLRoutes (iOS, 4,300 stars!) dudego/DeepLinkHandler  (iOS, 28 stars...) Google Firebase Dynamic Links iOS: How to open Deep Links, Notifications and Shortcuts React Native Deep Linking for iOS and Android

Serverless

Serverless The serverless application framework. Over 21,000 GitHub stars and counting. Medium.com How we migrated our startup to serverless The team decided to ditch all of our EC2 containers and instances in favor of using AWS Lambda within a serverless architecture. To help us orchestrate all of our AWS Lambda functions, we selected the Serverless Framework. A cloud guru

iOS and Android native App Install Banner

Android Native App install banners are similar to Web app install banners, but instead of adding to the home screen, they will let the user install your native app without leaving your site. Developer Google iOS Promoting Apps with Smart App Banners: Safari has a new Smart App Banner feature in iOS 6 and later that provides a standardized method of promoting apps on the App Store from a website. Developer Apple

AWS Lambda lifecycle and in-memory caching

The ephemeral nature of AWS Lambda functions might have you believe that techniques like in-memory caching cannot be utilized like you would with a conventional server, but that’s not the case! Let’s check out why. TJ Holowaychuk on Medium.com Even though you can't fully rely on them, our experimentation has shown that global variables can be used for some opportunistic caching. Amazon Lambda launches a number of computer instances to run function invocations, and keeps them alive for an unspecified period of time, which may be several hours. During this time, Lambda functions can access cached data previously stored in global variables. When a function invocation happens to run on a fresh instance, data has to be fetched from a more persistent source again. Amazon AWS Lambda data caching solutions compared

Learn Swift 4 with Bob

Very nice, focussed reference! Purpose As a developer whose first programming language is Swift, I've taken online courses from major platforms. However, I have been frustrated by a lack of detailed explanations from instructors. They tend to focus on final products, thus missing out the fundamentals. I was confused by which design principles to follow, and why. After I've been blogging for the last 5 months, I've discovered this isn't the only problem of mine. I've received hundreds of emails and questions regarding how to write code that does not violate principles such as DRY, modularity, and readability. As a result, I've decided to create this course dedicated for my younger self. I believe it all comes down to the fundamentals which I lacked in the beginning. Learn Swift with Bob

Forget about MVC, MVVM and MVP - MVI (Model-View-Intent) is coming!

module.exports = function (model, view, intent) { if (view) { view.observe(model); } if (intent) { intent.observe(view); } if (model) { model.observe(intent); } }; The first thing to notice is regarding the communication, as you can see from the schema above the communication is unidirectional. In MVI, the view is exposing an observable for the intent to capture all the user interactions from the view and passing the data through an observable to the intent. The intent is preparing the data received for the model, and these data are passed to the model via an observable again. Last but not least the model save these data and update the view exposing an observable to the view. The view is not changing directly, but it’s just preparing the virtual tree to be rendered by any renderer. Bear in mind that one peculiarity of an MVI architecture is that an object shouldn’t manipulate or directly call any method of another object; the only communication allowed are through observab...

direnv -- Unclutter your .profile

direnv is an environment switcher for the shell. It knows how to hook into bash, zsh, tcsh and fish shell to load or unload environment variables depending on the current directory. This allows project-specific environment variables without cluttering the ~/.profile file. direnv.net

AWS is offering AppSync – Build data-driven apps with real-time and off-line capabilities

AWS AppSync is a fully managed serverless GraphQL service for real-time data queries, synchronization, communications and offline programming features. With AppSync developers can simplify the retrieval and manipulation of data across multiple data sources with ease, allowing them to quickly prototype, build and create robust, collaborative, multi-user applications. AppSync keeps data updated when devices are connected, but enables developers to build solutions that work offline by caching data locally and synchronizing local data when connections become available. The GraphQL Proxy passes the client request to the Resolver which maps and executes the request payload against pre-configured AWS data services like an Amazon DynamoDB table, an AWS Lambda function, or a search capability using Amazon Elasticsearch. The Resolver executes calls to one or all of these services within a single network call minimizing CPU cycles and bandwidth needs and returns the response to the client....

Alpha Apps vs. App Unbundling

Aktuell wird viel über das Modell der "Alpha Apps" und "App Unbundling" gesprochen. Hier kurz eine Ãœbersicht und meine 5 cents: Alpha Apps Die chinesische App WeChat geht noch weiter: Neben einem Messenger, vergleichbar mit WhatsApp, bietet sie einen Lieferdienst à la Lieferando, die Möglichkeit etwa das eigene Konto zu checken (wie sonst bei der Bank-App) und gleichzeitig die Chance etwa Promis zu folgen, wie es Twitter bietet. Solche Alpha-Apps können dadurch verschiedene Aspekte und Möglichkeiten des Internets verbinden und werden so zum idealen Zugangsportal zum Netz – so wie traditionell der Browser am Computer. Den Tod des Browsers bedeutet das aber noch lange nicht. Der Browser ist tot, es lebe der Browser! Wirtschafts Woche App Unbundling Unbundling steht für das Unterteilen von Apps oder verschiedener Funktionen in mehrere, eigenständige Applikationen. Aber nicht jede Unbundling Aktion wird positiv von Usern aufgenommen. Facebook Messenger ...

Apps vs. Web

Eines scheint klar: Mobil büßt er gegenüber den Softwareprogrammen aus dem App-Store Nutzer ein. „Mittlerweile spielen Apps die wichtigste Rolle für den User – oder sie werden sie zumindest sehr bald spielen“, sagt Jan Wolter, Geschäftsführer von Applause EU. Apps bieten also im Gegensatz zum Browser Schnelligkeit gepaart mit Einfachheit und Bequemlichkeit. Sie öffnen zwar nicht die Welt ins gesamte World Wide Web, wie es der Browser kann, aber sie öffnen die Welt, die man möchte, wenn man ihr Icon auf dem Tablet anklickt. Die chinesische App WeChat geht noch weiter: Neben einem Messenger, vergleichbar mit WhatsApp, bietet sie einen Lieferdienst à la Lieferando, die Möglichkeit etwa das eigene Konto zu checken (wie sonst bei der Bank-App) und gleichzeitig die Chance etwa Promis zu folgen, wie es Twitter bietet. Solche Alpha-Apps können dadurch verschiedene Aspekte und Möglichkeiten des Internets verbinden und werden so zum idealen Zugangsportal zum Netz – so wie traditionell der ...

Universal Native Frameworks: Flutter vs. Xamarin

Flutter Uses Dart as programming language Draws on Skia Canvas Same UI, on all platforms The Good Flutter compiles to native Flutter supports hot reloading The Bad Flutter is written in Dart Flutter is in alpha "Flutter is unique in that while it allows access to native APIs, it doesn't use native UI elements," said developer Adam Pedley. Stanley Idesis: "Google's answer to Google's own problem" (building multiple apps for multiple platforms). "Flutter's main competitor, Xamarin, offers access to native APIs and simplifies your multi-platform application into one codebase. But it comes with an obvious downside: dependency," Idesis said. "If Xamarin shuts down or stops receiving support, so does your app. When you build your app in Xamarin, you essentially handcuff yourself to the platform -- and not in a fun way. Xamarin Flutter Xamarin Faces Challenge from Google's Flutter Mobile SD...

OneDrive and me are having a problem with each other... or two... or three.

OneDrive wants me to change the filename in that manner that It does not start or end with a space Does not end with a dot Does not begin with two dots and... is in accordance with the UN guidelines about digital warfare.