Skip to main content

Posts

Showing posts from 2017

HockeyApp gets free after Microsoft taken over and now provides continuous functionalities

Visual Studio App Center Continuous-Funktionalität für alles: Erstellen, Testen, Bereitstellen, Aktivieren, Wiederholen Link to GitHub, BitBucket, whatsoever Buildvorgänge in der Cloud Testen auf echten Geräten Automatisieren Sie Benutzeroberflächentests auf Tausenden von echten Geräten und mit Hunderten von Konfigurationen in der Cloud mithilfe gängiger Frameworks wie Appium, Espresso und XCUITest Pushen von Liveupdates in die App Cordova and Xamarin only Sofortiges Verteilen von Apps Schnellere Analysen und Erkenntnisse Überwachen der Integrität Ihrer Apps Ansprechen von Benutzern mit Pushbenachrichtigungen Visual Studio App Center

Using Speech with iOS and Android: SiriKit, Voice Capabilities, Google Assistant

SiriKit SiriKit enables your iOS apps and watchOS apps to work with Siri, so users can get things done using just their voice. Your content and services can be used in new scenarios including access from the lock screen and hands-free use. Apps adopt SiriKit by building an extension that communicates with Siri, even when your app isn’t running. The extension registers with specific domains and intents that it can handle. For example, a messaging app would likely register to support the Messages domain, and the intent to send a message. Siri handles all of the user interaction, including the voice and natural language recognition, and works with your extension to get information and handle user requests. Apple Developer Adding Voice Capabilites Voice actions are an important part of the wearable experience. They let users carry out actions hands-free and quickly. Wear provides two types of voice actions: System-provided These voice actions are task-based and are built into ...

Electron - Build cross platform desktop apps with JavaScript, HTML, and CSS

If you can build a website, you can build a desktop app. Electron is a framework for creating native applications with web technologies like JavaScript, HTML, and CSS. It takes care of the hard parts so you can focus on the core of your application. Web Technologies Electron uses Chromium and Node.js so you can build your app with HTML, CSS, and JavaScript. Open Source Electron is an open source project maintained by GitHub and an active community of contributors. Cross Platform Compatible with Mac, Windows, and Linux, Electron apps build and run on three platforms. The hard parts made easy Automatic updates Native menus & notifications Crash reporting Debugging & profiling Windows installers   Electron

Firebase Predictions API

Create custom predictions In addition to the default predictions will churn will spend and will not spend you can create custom predictions based on conversion events in your app. Get started Add Analytics and any custom events to your app. Enable Analytics data sharing in your app. Create and evaluate predictions. See the effects of different risk tolerance levels. Use a prediction with Remote Config. Use a prediction with the Notifications composer. Google Firebase Predictions

Siri - still a long way to go...

Never mind Siri, thanks. 😒

Will Apple provide external GPU solutions by spring 2018?

There is a little hint that comes with the High Sierra documentation: Virtual Reality für den Mac. Eine ganz neue Welt. Mit macOS High Sierra können Entwickler zum ersten Mal interaktive Virtual Reality Erlebnisse auf dem Mac erstellen – mit dem neuen iMac mit Retina 5K Display, dem neuen iMac Pro, der Ende 2017 kommt, und jedem unterstützten Mac, der an eine externe GPU gekoppelt ist (Fußnote: Geplant für Frühjahr 2018 ). I am curious :) Apple High Sierra

Managing State with RxJava by Jake Wharton

Watch: This Brilliant Lego Calendar Syncs With Google

Last year, the designers at Vitamins, a design studio in London, took some time to build something for themselves. What they needed was a way to keep track of all their various projects. It had to be big and visual and easy to use in person but also accessible online. Their solution? A wall-sized calendar made entirely of Lego bricks that syncs with Google automatically via smartphone screenshots. Wired

MockServer - Easy mocking of any system you integrate with via HTTP or HTTPS

MockServer can be used for mocking any system you integrate with via HTTP or HTTPS (i.e. services, web sites, apps , etc). MockServer can: return a "mock" response when a request matches an expectation forward a request when the request matches an expectation (i.e. a dynamic port forwarding proxy) execute a callback when a request matches an expectation, allowing the response to be created dynamically verify requests have been sent (i.e. as a test assertion) MockServer

LeakCanary - Memory leak detection library for Android

A memory leak detection library for Android and Java. “A small leak will sink a great ship.” - Benjamin Franklin LeakCanary will automatically show a notification when an activity memory leak is detected in your debug build. GitHub / LeakCanary

Running Espresso Tests in parallel with Spoon and Android Test Sharding

Introduction to Android Espresso Testing and Spoon Espresso UI test automation framework is Google’s de-facto testing platform for Android app developers. No test engineer or developer will be quite unless it validates the functionality of his app on multiple devices and emulators. For that, there is another widely used tool called Spoon (there are also cloud-based solutions as mentioned above that support parallel execution on real devices). This tool, will collect all the target devices (that are visible via adb devices) test results and aggregate them into one HTML view that can be easily investigated. Mobile Testing Blog Android Test Sharding The test runner supports splitting a single test suite into multiple shards, so you can easily run tests belonging to the same shard together as a group, under the same Instrumentation instance. Each shard is identified by an index number. When running tests, use the -e numShards option to specify the number of separate shards to cr...

Firebase Remote Config

Firebase Remote Config is a cloud service that lets you change the behavior and appearance of your app without requiring users to download an app update. When using Remote Config, you create in-app default values that control the behavior and appearance of your app. Then, you can later use the Firebase console to override in-app default values for all app users or for segments of your user base. Your app controls when updates are applied, and it can frequently check for updates and apply them with a negligible impact on performance. Firebase Remote Config

Firebase Performance Monitoring

Introducing Firebase Performance Monitoring Monitoring performance from the end user's point of view - both app code performance and network responsiveness/reliability - is a challenge for building great mobile apps. You have to be able to understand conditions that need improvement, in order to avoid user churn and negative reviews. Conversely, we have seen that 60% of 5-star reviews on Google Play mention speed, design or usability. This is why we built Firebase Performance Monitoring for iOS and Android. It provides an SDK to capture and instrument performance metrics in production, and a console to gain insights about the data captured by the SDK. Firebase Google Blog Firebase Performance Monitoring Docs

Kotlin for iOS and Kotlin/ktor as Web backend framework

Kotlin/Native Tech Preview: Kotlin without a VM We are happy to announce the first Technology Preview of Kotlin/Native that compiles Kotlin directly to machine code. The Kotlin/Native compiler produces standalone executables that can run without any virtual machine. Kotlin/Native uses the LLVM compiler infrastructure to generate machine code. In this preview, we support the following target platforms: Mac OS X 10.10 and later (x86-64) x86-64 Ubuntu Linux (14.04, 16.04 and later), other Linux flavours may work as well Apple iOS (arm64), cross-compiled on MacOS X host Raspberry Pi, cross-compiled on Linux host Kotlin/Native Ktor Ktor is a framework for quickly creating web applications in Kotlin programming language with minimal effort. This web site provides a complete reference to the Ktor application structure, programing interface and how to approach particular tasks. Kotlin/Ktor

React Native and how to (partly) integrate it in your native app

React Native React Native lets you build mobile apps using only JavaScript. It uses the same design as React, letting you compose a rich mobile UI from declarative components. React Native uses the same fundamental UI building blocks as regular iOS and Android apps. You just put those building blocks together using JavaScript and React. With Hot Reloading, you can even run new code while retaining your application state. React Native combines smoothly with components written in Objective-C, Java, or Swift. React Native Currently it's full monty or none: Either you use React Native completely for you app or you can't use it at all, e.g. for a single widget or screen. If you face the same situation take a look at: Electrode Native: The Platform For Integrating React Native Into Your Apps Electrode Native offers a streamlined integration of React Native into existing mobile applications. With Electrode Native, there will no longer be a need for an en...

Caching POST requests with Varnish

Caching POST requests  When a client (web browser) wants a regular resource (eg a HTML document or an image) from a web server, it will make a GET request to the server. In a default installation, Varnish will cache such requests, and this will lessen the load on the conventional web server. When a user logs in to a site, or provides some unique or private information, this will be done through a POST request. By default, Varnish will not cache POST requests, but pass them directly to the backend server, unmodified. This is typically a good idea, but sometimes it makes sense to also cache POST requests. When two different users use POST towards a web server, we only want them to receive the same reply if they supplied the same request body. The solution is to make the request body a part of the hash, and let the normal caching logic happen. The result is that only clients who supply the same body will receive the the same reply. This tutorial describes the steps needed to c...

STF: Open-Source Fastest device testing Smartphone Test Farm for Android

No more trouble Forget having to physically pick up a device ever again. No more learning where the buttons are, or where the power cord goes. Remote control Any device in realtime, using your mouse and keyboard. Or even your own smartphone. Manage inventory See which devices are connected, and who is using which device. Search devices by any specification. From your browser No app installation is required as a user. Do realtime testing on more than one device, using just your browser. Control Multiple Devices As if they were plugged directly to your computer OpenSTF.io GitHub

Apple updated Ratings and Review Policy

You can ask users to rate and review your app at appropriate times throughout the user experience. Make the request when users are most likely to feel satisfaction with your app, such as when they've completed an action, level, or task. Give users an easy way to provide feedback on the App Store without leaving your app using the SKStoreReviewController API . You can prompt for ratings up to three times in a 365-day period . Apple App Store Ratings and Reviews When you call SKStoreReviewController.requestReview() while your app is still in development mode, a rating/review request view is always displayed so that you can test the user interface and experience. However, this method has no effect when you call it in an app that you distribute using TestFlight . Apple Developer Documentation

25 Android libraries you definitely want to try out in early 2017

This is a list of 25 best Android libraries released in January and February 2017. All of these are worth trying out — they are not in ranked order. Let’s get started! Lottie - Animations Store - Async Data Loading and Caching Check out our Carlos , too! Chuck - HTTP debugger for OkHttp CoordinatorTabLayout ShimmerRecyclerView - Cell loading indicator like FB freeCodeCamp

Texture: Keeps the most complex iOS user interfaces smooth and responsive.

Texture Texture is an iOS framework built on top of UIKit that keeps even the most complex user interfaces smooth and responsive. It was originally built to make Facebook's Paper possible, and goes hand-in-hand with pop's physics-based animations — but it's just as powerful with UIKit Dynamics and conventional app designs. More recently, it was used to power Pinterest's app rewrite. As the framework has grown, many features have been added that can save developers tons of time by eliminating common boilerplate style structures common in modern iOS apps. If you've ever dealt with cell reuse bugs, tried to performantly preload data for a page or scroll style interface or even just tried to keep your app from dropping too many frames you can benefit from integrating Texture. Pinterest: Texture pop: An extensible iOS and OS X animation library, useful for physics-based interactions. Pop is an extensible animation engine for iOS, tvOS, and OS X. In additi...

Backend-driven native UIs

Backend-drive native UIs John Sundell  Slide Share Using Back-End Design to Create Customizable Front-End Mobile Experiences By controlling the front end of mobile apps from the back end we can build customized experiences at runtime, creating cleaner interfaces and reducing load times. Nithin Rao UX Magazine The Hub Framework Welcome to the Hub Framework - a toolkit for building native, component-driven UIs on iOS ( no Android support released yet ). It is designed to enable teams of any size to quickly build, tweak and ship new UI features, in either new or existing apps. It also makes it easy to build backend-driven UIs. The Hub Framework has two core concepts - Components & Content Operations. Spotify LeeGo: Build UI without UIView LeeGo is a lightweight Swift framework that helps you decouple & modularise your UI component into small pieces of LEGO style's bricks, to make UI development declarative, configurable and highly reusable. Wang Shen...

Firebase Cloud Functions

Cloud Functions for Firebase (similar to AWS Lambda) lets you automatically run backend code in response to events triggered by Firebase features and HTTPS requests. Your code is stored in Google's cloud and runs in a managed environment. There's no need to manage and scale your own servers. Realtime Database Triggers Firebase Authentication Triggers Google Analytics for Firebase Triggers Cloud Storage Triggers Cloud Pub/Sub Triggers HTTP Triggers Firebase Google

ARKit and ARCore

ARKit from Apple iOS Visual Inertial Odometry ARKit uses Visual Inertial Odometry (VIO) to accurately track the world around it. Scene Understanding and Lighting Estimation ARKit can detect horizontal planes like tables and floors, and can track and place objects on smaller feature points as well. High Performance Hardware and Rendering Optimizations You can take advantage of the optimizations for ARKit in Metal, SceneKit, and third-party tools like Unity and Unreal Engine. Supported formats include the following: Format Filename Extension Supported in Digital Asset Exchange .dae macOS 10.8 and later Alembic .abc macOS 10.10 and later SceneKit compressed scene .dae  or  .abc macOS 10.10 and later iOS 8.0 and later SceneKit archive .scn macOS 10.10 and later iOS 8.0 and later Developer Apple WWDC 2017 - ARKit Demo ARCore from Google Android ARCore works with Java/OpenGL, Unity and Unreal and foc...

UI Tests with Xcode 8

Generic approach to iOS UI Tests in Swift Page object concept WWDC 2017 What's New in Testing Xcode Automated UI Tests & NSUserDefaults The solution I found was to write to the launchArguments property of my XCUIApplication instance in my test class, and then read that parameter in my AppDelegate class. XcodeUITestingExperiments NetworkStubbingExperiment FileSystemManipulation SystemLogQuery Lightweight IPC with the Darwin notification center Self-contained UI tests for iOS applications Disabling animations Page objects Assert helpers Network data stubbing with Wire Mock Using data from mocks in tests Instrumentation Testing Robots Libraries like Espresso allow UI tests to have stable interactions with your app, but without discipline these tests can become hard to manage and require frequent updating. In this talk Jake will cover how the so-called robot pattern allows you to create stable, readable, and maintainable tests with the aid of Kotlin’s...

Detect if your Native app is installed from your web site

As the capabilities of the Web become more aligned with what was once the domain of native experiences there are an increasing number of times where a developer will want to reduce the confusion for their users who have both the web and native apps installed. In Chrome 59 we are introducing a new API called getInstalledRelatedApps() . This new API lets you determine if your native app is installed on a device. Paul Kinlan @ Medium.com

Apple iTunes Auto-Renewables: Increase price of existing auto-renewable subscriptions while keeping existing subscribers at their current price

If you increase pricing, you can either maintain the current price for existing subscribers or apply the price change for all users. As you go through the workflow outlined in Making Price Changes to Auto-Renewable Subscriptions, you can choose whether to apply the price increase to all subscribers. As of iOS 10.0, if you decide to increase prices for existing subscribers, Apple will notify the subscribers of the price increase, along with the date they will be charged the new price. They’ll need to agree to the new price before they're charged. If they don't agree, their subscription won't automatically renew. Note that price preservation is only available when you increase pricing; not when you decrease pricing. Price decreases will be immediately applied to all subscribers paying a price higher than the one you set. Apple Developer Documentation

Speed up your unit tests! Swap out your App Delegate for testing.

Faster, please One thing that can slow our tests down is if our App performs expensive tasks on startup and it is not unusual to place code that synchronizes with a server in our implementation of UIAppDelegate. Luckily for us there is a way to change the production App Delegate with a fake that does nothing. Objective-C class FakeAppDelegate: UIResponder, UIApplicationDelegate {   var window: UIWindow?   func application(application: UIApplication,     didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {     self.window?.rootViewController = UIViewController()     return true   } } let isRunningTests = NSClassFromString("XCTestCase") != nil if isRunningTests {   UIApplicationMain(Process.argc, Process.unsafeArgv, nil,     NSStringFromClass(FakeAppDelegate)) } else {   UIApplicationMain(Process.argc, Process.unsafeArgv, nil,     NSStringFromClass(AppDelegate)) ...

10 new iOS libraries

Hydra Hydra is full-featured lightweight library which allows you to write better async code in Swift 3+. Lottie Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with bodymovinand renders the vector animations natively on mobile and through React Native! Hero Hero is a library for building iOS view controller transitions. It provides a layer on top of the UIKit’s cumbersome transition APIs. Making custom transitions an easy task for developers. Charts Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. JTAppleCalendar The Unofficial Swift Apple Calendar Library. View. Control. for iOS & tvOS and more... Seyhun AKYÜREK at Medium

Unidirectional Data Flow Architecture (Redux) in Swift

In this post, I try to explain why using Redux with Swift is better idea [than MVVM]. What is Redux and Unidirectional Data Flow? Redux is a flux implementation but slightly better implementation, it makes your application’s state more predictable. It first came out in Javascript world as a predictable state container for JavaScript apps with the powerful javascript library React. Redux, simply makes your application’s state in single store object. So firing an action from your application/in view’s lifecycle state changes and your reducers for that action generate a new state. Seyhun Akyürek at Medium Replacing Redux in Swift with something better Being a fantastic framework for development doesn’t come without a cost. Every time you update internal state in Redux, the entire interface re-renders. This isn’t a huge deal in most cases. But eventually you might have a situation where one update to state needs to be instantaneous (like using the keyboard shortcut to move f...

Extract sub-libraries from a given iOS/Swift library without access to source code to avoid namespace clashes using lipo and ar command

We at WeltN24 were facing the problem that two libraries that we integrated in our iOS project, used the same sub-library which resulted in naming conflicts due to the non-existing namespaces in Swift. If you know what you are doing you can try to solve this conflict by extracting the shared sub-library from one of the libraries you want to integrate. You can even do this if you don't have access to the source code using the lipo (create or operate on universal files) and ar (create and maintain library archives) commands. Why you should know what you are doing? Manipulating unknown archives can result in unforseen effects because of the fact that you don't know anything about how the provider of the archive uses the sub-library, which version of the library was used or if the source code of the library was manipulated. So... You should know what you are doing manipulting archives :) The script is processing the files in following order: Extracting architecture slice...

10 Kotlin Tricks in 10 ish minutes by Jake Wharton Devoxx

Why Core ML will not work for your app (most likely)

While the buzz around newly released Apple framework is loud, I want to explain several things, that may not be obvious for those who are new to machine learning (ML). Core ML is not a machine learning framework. Core ML supports only two types of ML. If your models are proprietary or contain sensitive information, you can’t use CoreML. Core ML doesn’t solve the privacy concerns. Core ML doesn’t compress models. Core ML is not the only way to do machine learning on iOS. Learn Machine Learning, not Core ML. Impervious Invisibility Google’s AutoML lets you train custom machine learning models without having to code TechCrunch

iOS Architecture Patterns - Demystifying MVC, MVP, MVVM and VIPER

Feeling weird while doing MVC in iOS? Have doubts about switching to MVVM? Heard about VIPER, but not sure if it worth it? You are about to structure your knowledge about architectural patterns in iOS environment. We’ll briefly review some popular ones and compare them in theory and practice going over a few tiny examples. Follow links if you need more details about any particular one. Mastering design patterns might be addictive, so beware: you might end up asking yourself more questions now than before reading this article, like these: Who supposed to own networking request: a Model or a Controller? How do I pass a Model into a View Model of a new View? Who creates a new VIPER module: Router or Presenter? Bohdan Orlov medium.com

WWDC 2017: App Rating Changes

Apple is putting an end to the scourge of review prompts that seemed to pop up inside of some apps every few days. In a change to the App Store rules this week, Apple said it will now enforce hard limits on how review prompts show up and how often users have to see them. First, apps will be required to use a new Apple-made review prompt, which allows users to leave a rating without exiting an app. An app can only display the prompt three times a year, regardless of how often it’s been updated. Part of the reason developers have their apps show review prompts so often is because Apple has always reset an app’s rating after every update, even very minor ones. With the redesigned App Store, developers will have the option to change that, so that their app’s ratings are maintained between updates. And if you release a major new version that drastically changes the core features of your app, you can press the big button to reset the App Store ratings. The Verge

Planet of the Apps

The season premiere is finally here! Watch this new series about apps and their creators. Featuring Jessica Alba, Gwyneth Paltrow, Gary Vaynerchuk, and will.i.am. The first episode is available here for a limited time. Join Apple Music to get new episodes weekly. Planet of the Apps (Apple Music)

The fastest Diff and patch library in Swift to apply data changes in UICollectionView or UITableView

This library generates differences between any two Collections (and Strings). It uses a fast algorithm (O((N+M)*D)). Features Diff.swift supports three types of operations: Insertions Deletions Moves (use ExtendedDiff) Arbitrary sorting of the Patch Utilities for UITableView and UICollectionView (if that's just what you want, skip to examples) ⚡️ fast Diffing collections containing collections (use NestedDiff) GitHub / Wokalski / Diff

Code Security Guidelines for Java/Android and iOS

Secure Coding Practices - Quick Reference Guide The OWASP Java™ and JVM Technology Knowledge Base is the clearing house for all information related to building secure web/distributed applications and services based on Java and JVM technologies. The focus of these pages is on guidance for developers and architects using Java frameworks and JVM based technologies for web application development, on OWASP components that use Java and on participation in OWASP projects that use Java and JVM technologies. Moreover, we aim to provide security related guidance for system administrators managing Java and JVM based applications and tools. The project is not limited to Java. It aims to also address topics around the JVM in general. Community content is key to security information. The project depends on content from developers throughout the Java and JVM ecosystem. OWASP Java Homepage OWASP Java Guidelines (PDF) IOS Application Security Testing Cheat Sheet This cheat sheet provides...

URLNavigator

URLNavigator provides an elegant way to navigate through view controllers by URLs. URL patterns can be mapped by using URLNavigator.map(_:_:) function. URLNavigator can be used for mapping URL patterns with 2 kind of types: URLNavigable and URLOpenHandler. URLNavigable is a type which defines an custom initializer and URLOpenHandler is a closure which can be executed. Both an initializer and a closure receive an URL and placeholder values. Navigator.map("myapp://user/ ", UserViewController.self) Navigator.map("myapp://post/ ", PostViewController.self) Navigator.map("myapp://alert") { url, values in   print(url.queryParameters["title"])   print(url.queryParameters["message"])   return true } GitHub devxoul/URLNavigator

eureka - Elegant iOS form builder in Swift

Save Time Coding By adding Eureka, you will be able to create powerful forms without all the repetitive and complex code required. You can also create dynamic forms out of the box! Reuse Your Code Write your code once and use it everywhere. Forget about duplicated style and validation code and enjoy Eureka's abstractions to power up you app! Community Eureka is actively maintained and supported by Xmartlabs engineering team and a thriving community of users and contributors - it is currently used in +15k apps in the App Store! Best In Class Comprehensive documentation, tens of custom rows and lighting fast support of new Swift/iOS versions made Eureka the preferred tool of 10 of the top 200 apps in the App Store. GitHub

App Performance Monitoring

AppDynamics Real-time performance monitoring—from code-level to customer experience Application Performance Monitoring Remove complexity and solve problems more quickly with proactive, end-to-end performance monitoring. End-User Monitoring Create better experiences where your customers are engaging with your business the most. Business Performance Monitoring See the real-time impact application performance and customer experience are having on your bottom line. AppDynamics bonkey: " I still call it CRASHDynamics " ...maybe they improved since then? New Relic Performance monitoring for today’s digital business Full Stack Visibility Monitor and optimize your entire technology stack—from your infrastructure and applications to browser and mobile apps. Built to Scale The only pure-play 100% multi-tenant cloud platform that's easy to deploy. And with no hardware to manage, you can see higher ROI and significantly lower TCO. Real-time Analytics for Ev...

What’s New in TestFlight

April 11, 2017 TestFlight in iTunes Connect now provides multiple build support, enhanced group capabilities, and improved tester management—making it even easier to test your apps. Multiple Builds TestFlight now lets you distribute and test multiple builds at the same time, so testers can choose from a number of builds to test. Groups TestFlight groups have changed. You can now do more with them, like create groups of TestFlight users, and each group can test a different build. To get you started, we’ve added all of your existing external testers to the group “External Testers,” which you can edit at any time. Tester Management Testers can continue testing a build when it goes live on the App Store, minimizing disruptions. iTunes Connect users can also access all active builds, letting them seamlessly compare different builds and you can easily resend invitations to testers who have not yet accepted their invitation. Apple

Software Sucks Because QA and Testing are Underpaid and Misunderstood

Everybody who hires in the software industry complains about how hard it is to find good QA people. It’s no wonder, considering how little we respect them and how little we pay them. Testers are power users on the inside of your team, but nobody listens to them because nobody respects them. Make the QA lead the equal of the Design and Dev Leads in your hierarchy. Give the QA Lead line management over the QA team. It is weirdly commonplace for the QA team, including the QA Lead, to be line managed by the Dev Lead. Tracy Rolling

Track uninstalls on iOS

 iTunes Connect does not have any metric for presenting number of uninstalls. Developers do not have any callback for uninstall and hence can not call any API, that could have been used as a counter or something. There are number of attribution tools in the market that can help you with tracking uninstalls. Uninstall Event Tracking Solution involves working with Push Notifications and creating a daily ping service. Medium.com

Firebase App Indexing from Google for Android and iOS

Firebase App Indexing gets your app into Google Search. If users have your app installed, they can launch your app and go directly to the content they're searching for. App Indexing reengages your app users by helping them find both public and personal content right on their device, even offering query autocompletions to help them more quickly find what they need. If users don’t yet have your app, relevant queries trigger an install card for your app in Search results. App Indexing lets Google index your app just as if it were a website. For users with your app installed, deep links to your app - on Android or iOS - appear in Google Search results, allowing users to find exactly the right content within your app. In addition to driving re-engagement, App Indexing on Android will also surface install buttons for users who do not yet have your app installed. Since 1 in 4 appsare already being discovered through search, App Indexing is a simple and free method for acquiring new u...

Headless WebKit now means Headless Chromium Chrome instead of headless PhantomJS

Announcement Bad news for beloved PhantomJS : Headless mode allows running Chromium in a headless/server environment. Expected use cases include loading web pages, extracting metadata (e.g., the DOM) and generating bitmaps from page contents -- using all the modern web platform features provided by Chromium and Blink. To use headless, start Chrome with a command line flag:  $ chrome --headless --remote-debugging-port=9222 https://chromium.org Chrome Platform Status Puppeteer Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome or Chromium. GitHub Usage from Node.js For example, the chrome-remote-interface Node.js package can be used to extract a page's DOM like this: const CDP = require('chrome-remote-interface'); CDP((client) => {   // Extract used DevTools domains.   const {Page, Runtime} = client;   ...

3D everywhere: on smartphones, virtual reality wear, in the browser - where is the content?

The virtual reality goggles are everywhere: Oculus Rift HTC Vive Microsoft Hololense Google Cardboard (I love low-tech approaches!) But where is the 3D content? Here you go! Google Cardboard App ( Android and iOS ) Record 360 VR images - great for real estate! You can play back the images either on the phone with the app Or in the web: VR View with the web Google Daydream Microsoft 3D scan via smartphone 3D-Scanner für die Hosentasche: Microsoft-App scannt jedes Objekt How Microsoft Is Pushing the 3D Revolution With Windows 10 Apple Exploring New 3D Dual-Lens Camera Hardware for iPhone 8 Apple AR glasses rumours And how to close the digital gap and drag an 3D object into real life? Shapeways - Personalized, 3D Printed Products

Implementing UI tests on iOS and Android using screenshot comparison tools

Have you ever thought when writing or maintaining UI tests, there must be a better way? Take a look at screenshot tests provided by Google Firebase and Facebook: ios-snapshot-test-case A "snapshot test case" takes a configured UIView or CALayer and uses the renderInContext: method to get an image snapshot of its contents. It compares this snapshot to a "reference image" stored in your source code repository and fails the test if the two images don't match. GitHub Facebook screenshot-tests-for-android Testing rendering for your Android app is hard. How do you prevent visual regressions in paddings and margins and colors from creeping in? Iterating on UI code is hard. How do you quickly verify that your layout or view changes work correctly in all configurations? screenshot-tests-for-android can solve these problems by providing a test framework that checks for visual differences across changes. GitHub Facebook Google Firebase Test Lab Test Lab l...

React Native: A year in review

It's been one year since we open-sourced React Native. What started as an idea with a handful of engineers is now a framework being used by product teams across Facebook and beyond. Today at F8 we announced that Microsoft is bringing React Native to the Windows ecosystem, giving developers the potential to build React Native on Windows PC, Phone, and Xbox. It will also provide open source tools and services such as a React Native extension for Visual Studio Code and CodePush to help developers create React Native apps on the Windows platform. In addition, Samsung is building React Native for its hybrid platform, which will empower developers to build apps for millions of SmartTVs and mobile and wearable devices. We also released the Facebook SDK for React Native, which makes it easier for developers to incorporate Facebook social features like Login, Sharing, App Analytics, and Graph APIs into their apps. In one year, React Native has changed the way developers build on every major...

HockeyApp goes Azure to provide fabric.io and Cloud CI functionality

HockeyApp presents beta of Mobile Center. Mobile Center is the next generation of HockeyApp. We are very excited about the much more comprehensive solution Mobile Center provides. The changes we are making to Teams helps to modernize HockeyApp into a similar pattern being used in Mobile Center and will allow us to provide a much smoother side by side experience between HockeyApp and Mobile Center. You can log in to Mobile Center today using your existing HockeyApp account and password to give it a try. Mobile Center brings together multiple services, commonly used by mobile developers, into a single, integrated product. You can build, test, distribute, and monitor your mobile apps and easily add backend cloud services to scale your app to millions of users on demand. Mobile Center seems to provide a mixture of fabric.io crashlytics and statistics plus a Cloud CI solution like Travis CI. YouTube HockeyApp

Ministry of Testing: The Mobile Test Pyramid

The flipped testing pyramid has no stable foundation and mobile testing requires lots of manual testing, which is why I created my own mobile test pyramid consisting of four layers including manual and automated steps. The biggest layer of the pyramid is manual testing and forms the strong foundation for every mobile app project, followed by end-to-end testing, beta testing and a top layer comprising unit testing. The grey parts of the pyramid indicate the automated steps and the white parts are the manual testing steps. The beta-testing layer is new to the pyramid but essential to every mobile app project. Ministry of Testing Hands-On Mobile App Testing: A Guide for Mobile Testers and Anyone Involved in the Mobile App Business

Kotlin 1.1 Released with JavaScript Support, Coroutines and more

JavaScript Support Transpile to JavaScript Use node.js, CommonJS and AMD Import TypeScript Use other libs Coroutines Technically, coroutines are light-weight means of cooperative multi-tasking (very similar to fibers). In other words, they are just much better threads: almost free to start and keep around, extremely cheap to suspend (suspension is for coroutines what blocking is for threads), very easy to compose and customize. We designed coroutines for maximum flexibility: very little is fixed in the language, and very much can be done as a library. The kotlinx.coroutines project features libraries on top of Rx, CompletableFuture, NIO, JavaFx and Swing. Similar libraries can be written for Android and JavaScript. Even many built-in constructs available in other languages can now be expressed as Kotlin libraries. This includes generators/yield from Python, channels/select from Go and async/await from C# JetBrains

Smartphone Market Q4/2016: Apple back to #1

Apple hat sich nach zwei Jahren mal wieder an die Spitze des Smartphone-Markts geschoben und liegt nun knapp vor Samsung – dank eines starken Weihnachtsquartals und des Note-7-Debakels. Hersteller 4. Quartal 2016 4. Quartal 2015 Absatz +/- Geräteabsatz Marktanteil Geräteabsatz Marktanteil Apple 77,0 Mio. 17,9 % 71,5 Mio. 17,7 % +7,7 % Samsung 76,8 Mio. 17,8 % 83,4 Mio. 20,7 % -8,0 % Heise

Top 10 iOS Conferences in 2017

Attending an iOS conference is a great way to learn new things and make new friends. Also – as Ray said in one of his recent talks – good conferences give you a spark of motivation that burns even brighter even after you return home. Did you ever notice that upbeat attitude the days right after a conference? There’s plenty of great iOS conferences out there, so choosing which one to attend can be difficult. This post will help you find the best matches for you in 2017. Picking the top 10 is a hard task. This is why I reached out to the raywenderlich.com team and the entire iOS community to ask for their feedback in developing this list. Ray Wenderlich

Automate Testing & Build Delivery with fastlane and Travis CI

Conclusions and Future Considerations We demonstrated how to set up continuous integration and delivery in a real-world setting. We made our code reviews safer by making Travis CI run our test suite automatically on each pull request. And finally, we automated pushing builds to testers and clients, thus saving developers from having to do it manually. Macosope

UIApplication.setAlternateIconName - Dynamically change the app's icon

Use this method to change your app's icon to its primary icon or to one of its alternate icons. You can change the icon only if the value of the supportsAlternateIcons property is true. You must declare your app's primary and alternate icons using the CFBundleIcons key of your app's Info.plist file. For information about how to configure alternate icons for your app, see the description of the CFBundleIcons key in Information Property List Key Reference. Apple Developer

WKWebView open with Cookie set

WKWebView * webView = /*set up your webView*/ NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/index.html"]]; [request addValue:@"TeskCookieKey1=TeskCookieValue1;TeskCookieKey2=TeskCookieValue2;" forHTTPHeaderField:@"Cookie"]; // use stringWithFormat: in the above line to inject your values programmatically [webView loadRequest:request]; StackOverflow