반응형

브라우저에서 모바일 애플리케이션 열기. 

Open Mobile Application From The Browser( web) , intent, deeplink, url scheme

https://vhudyma-blog.eu/open-mobile-application-from-the-browser/  

 

딥링킹 유형

딥 링크에는 두 가지 주요 유형이 있습니다.

  • 기본
  • 링크는 응용 프로그램이 설치되어 있으면 열리고 그렇지 않으면 오류 메시지가 표시됩니다.
  • 연기
  • 링크는 애플리케이션이 설치되어 있으면 열리고, 그렇지 않으면 사용자가 Play 또는 App Store(또는 선택한 다른 위치)로 리디렉션됩니다.

이 외에도 Contextual Deep Linking 에 대해 들어보셨을 것입니다 .

상황별 딥 링크는 일반적으로 사용자에 대한 추가 정보를 수집하기 위해 추가된 일부 추가 매개변수와 함께 기본이거나 지연됩니다.


 

웹 브라우저에서 앱 열기

 

URL Scheme

사용자를 앱의 특정 콘텐츠로 바로 연결하는 URL 이다.

ex) naversearchapp://

위와 같은 URL Scheme를 이용하면 브라우저에서 해당 Scheme를 읽고 그 Scheme에 해당하는 앱이 있는 경우 (앱에서 설정) 열어준다.

하지만 다음과 같은 한계가 있다.

  • naversearchapp 같이 앞에 붙는 스키마는 유니크한 값이 아니기 때문에 같은 이름이 있을 경우 어떤앱을 열지 물어보게된다.
  • 앱이 미설치되어있는 경우 동작하지 않는다.

Android

intent filter

https://developer.android.com/guide/components/intents-filters?hl=ko

이 intent filter의 역할은 앱 열기에 한정된 것이 아니고 특정 앱으로의 메시징을 처리하는 객체인데, 이걸 딥링크처럼 활용할 수 있다.

앱에서 intent관련 설정을 지정하고, 웹에서 intent:// 와 같이 실행하면 앱을 실행할 수 있다.

이 방법은 위 URL 스키마 방식의 한계를 없애준다.

패키지명을 이용하기 때문에 유니크하고, 앱이 미설치되어있는 경우 해당 패키지에 해당되는 playstore로 이동한다.

https://developer.android.com/training/app-links/verify-site-associations?hl=ko

위 인텐트 필터 방식을 활용하여 웹사이트 URL 기반으로 앱을 여는 방식 (android 6.0 이상지원)

예를들어 https://medium.com 를 방문하는 경우 해당하는 앱을 열 수 있다.

웹에서는 무엇을 해주어야 하나?

기본적으로 인텐트 필터 설정은 앱쪽에서 해주지만, 웹에서도 해줘야할 것이 있다.

앱링크를 제공할 도메인이 특정 앱과 매칭된다는 것을 알려주기 위해 앱쪽에서 생성하는 assetlinks.json  https://{도메인}/.well-known/assetlinks.json 에 제공해줘야한다.

여기에는 몇 가지 제약이 따르게 되는데,

  1. HTTPS만 지원한다.
  2. assetlinks.json 를 가져오는데에 있어서 리디렉션이 일어나지 않아야하고 application/json 타입으로 응답되어야한다.
  3. 서브도메인이 다른 경우 모두 assetlinks.json 제공이 필요하다. 예를들어 www.medium.com  m.medium.com 가 존재한다면, assetlinks.json 를 모두 제공해야한다.
  4. robot.txt 가 접근가능해야한다. 즉, VPN 등이 있어야 접근가능한 경우 적용 불가능하다.

테스트는 어떻게하지?

이부분이 제일 골치아팠는데, 위와 같은 제약사항이 있기 때문에 VPN을 사용하거나 사내망이 따로 있는 경우 테스트하기가 번거롭다.

예를들어, 개발환경인 dev.aa.com 가 있고, 실제환경인 aa.com 이 있다고 했을 때 위 제약사항이 있기 때문에 assetlinks.json을 두 환경을 제공하는 서버 각각 넣어줘야한다.

대부분에 개발환경 서버는 VPN 뒤에 있기 때문에 위 4번 제약사항에 걸리게 된다.

이 때 찾아보았던 해결할 수 있는 방법은

  1. 만약 dev.aa.com  aa.com 과 같이 서브도메인 / 루트도메인의 관계라면 루트도메인에 assetlinks를 *.aa.com 과같이 설정함으로써 적용이 가능하다.
  2. app.dev.aa.com 과 같은 서버를 실제환경에 열어두고 여기서 테스트를 진행한다.

앱이 설치되어있지 않은 경우는?

기본적으로 앱링크 / 유니버셜링크는 앱이 설치되어있지 않은 경우 단순히 웹에서 해당 url을 표시하게 된다. 이런 경우 보통 "앱으로 이동" 과 같은 버튼을 표시하고, 클릭시 위에서 말한 인텐트 필터를 사용하게 된다.

iOS

ios의 경우 deffered deep link나 intent 필터 등의 기법은 없고 universal 링크만 이용 가능하다. (ios 9 이상)

https://developer.apple.com/ios/universal-links/

기본적으로 app link와 동일하다. 웹사이트 URL 기반으로 앱을 열게 동작해준다.

웹에서는 무엇을 해주어야 하나?

안드로이드와 마찬가지로 .well-known 하위에 파일 추가가 필요하다. (다른점은 루트 디렉토리에 넣어도 무방)

앱쪽에서 생성한 apple-app-site-association 파일을 넣어주게되는데, 마찬가지로 application/json 타입 제공이 필요하다.

주의할 점은, 안드로이드의 경우 assetlinks.json 의 파일 포맷이 json 이라 브라우저가 알아서 json 으로 처리해주는 반면, 해당 파일은 파일 포맷이 없으므로, 명시적으로 제공이 필요하다.

기본적인 제약사항 (VPN X, redirect X, 서브도메인지원 X)은 앱링크와 동일하다.

따로 문서에 명시되어있지는 않은데, 테스트 결과 앱링크와 마찬가지로 앱쪽에서 *.루트도메인 과 같이 설정한 경우 루트도메인에 넣은 설정파일로 서브도메인 지원이 가능하다.

앱이 설치되어있지 않은 경우는?

마찬가지로 앱열기버튼을 제공할 수 있다. (특히 유니버셜링크는 safari의 경우 앱열기버튼을 네이티브에서 제공하고 있다)

다만, iOS에서는 인텐트 필터처럼 앱의 설치여부를 구분해서 동작할 수 없기 때문에 조금 추가작업이 필요하다.

다음과 같은 방법을 고려할 수 있다.

  • firebase 다이나믹링크, 브랜치 등 외부 서비스를 이용하는 방식 (ex ) Medium, reddit )
    • 위 서비스들이 앱 설치/미설치시 분기처리를 제공해준다. Android의 경우 내부적으로 인텐트 필터를 이용하는 것으로 보인다.
  • 직접 처리하는 방식
    • 라우트를 https://aa.com/launchApp 과 같이 지정해놓고, 해당 라우트로 리디렉션 시킨다.
    • 만약 앱이 설치되어 있다면 유니버셜링크를 통해 서버에 접근하지않고 바로 앱이 열릴테고, 앱이 설치되어있지 않다면 해당 라우트로 들어오고 fe 서버에서 app store로 리디렉션 시킬 수 있다.

 

* https://godsenal.com/posts/%EC%9B%B9-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90%EC%84%9C-%EC%95%B1-%EC%97%B4%EA%B8%B0/

반응형
반응형

키오스크 애플리케이션을 웹 사이트로 개발할 경우의 장점 :

  1. 중앙 집중식 코드베이스에 업데이트를 신속하게 배포하십시오. 
    업데이트를 웹 사이트에 배포하는 것은 
    개별 키오스크에 업데이트를 배포하는 대신 서버의 웹 사이트를 업데이트하는 것입니다.

  2. 지름길로 기존 웹 사이트를 재사용하거나 더 친근한 분위기로 재 작업 할 수 있습니다.

  3. 기본 웹 사이트 개발은 일반적으로 Windows 소프트웨어보다 학습 곡선이 짧습니다.

  4. 민감한 정보는 서버에 저장 될 수 있으며 손상 될 수있는 개별 키오스크로 재분배되지 않습니다.

  5. Angular, Knockout 등과 같은 프레임 워크를 사용하면 페이지 당 html을 전송할 필요가없고 데이터만 전송되므로 웹 사이트가 기본 Windows 응용 프로그램처럼 작동 할 수 있습니다.

키오스크 애플리케이션을 웹 사이트로 개발할 때의 단점 :

  1. 업데이트가 나 빠지면 한 번에 모든 키오스크를 무너 뜨릴 수 있습니다. 웹 서버에 업데이트를 쉽게 배포 할 수있는 것은 업데이트에 문제가있을 때 양날의 검이 될 수 있습니다.

  2. 하드웨어 공급 업체는 종종 ActiveX / 애플릿에 대한 제한된 통합 지원을 제공합니다.

  3. UI 응답 성은 일반적으로 더 많은 대역폭을 필요로하므로 속도가 더 빠르므로 더 비싼 (더 빠른) 인터넷 연결을 구매하게됩니다.

  4. 웹 브라우저는 효과적인 재시도 및 캐싱 논리 를 구현하는 데 어려움을 겪습니다 .

  5. 페이지 및 응답을 생성 할 때 서버 처리의로드를 증가시킵니다.

  6. 서버에서 세션 만료 및 응용 프로그램 풀 재활용을 고려해야합니다.

웹 사이트를 개발할 때 크로스 브라우저 기능을 고려할 때 일반적으로 떠오르는 또 다른 단점이 있습니다.

다행스럽게도 키오스크는 단일 웹 브라우저 만 실행하도록 제한되어 있으므로 키오스크 환경에서는 문제가되지 않습니다. 즉, 키오스크 사용자는 웹 브라우저를 선택하지 않고 키오스크가 설정된 웹 브라우저를 사용합니다.

Pros of developing your kiosk application as a website:

  1. Quickly deploy updates to a centralized code-base. Deploying updates to your website is just a matter of updating the website on the server, rather than deploying updates to individual kiosks.
  2. As a shortcut you can reuse your existing website or just rework it to be more touch friendly.
  3. Basic website development typically has a shorter learning curve than Windows software.
  4. Sensitive information can be stored on the server and never redistributed to individual kiosks which could be compromised.
  5. Using frameworks like Angular, Knockout, etc…, you don’t have to transfer any html per page, only data, which can make the website behave more like a native Windows application.

Cons of developing your kiosk application as a website:

  1. If an update goes bad you break all of your kiosks at once. The ease of deploying updates to a web server can be a double-edged sword when something goes wrong with the updates.
  2. Hardware vendors often provide limited integration support for ActiveX/Applets.
  3. UI responsiveness is typically slower because it requires more bandwidth so you end up purchasing a more expensive (faster) internet connection.
  4. Web browsers make it a challenge to implement effective retry and caching logic.
  5. Increases the load on the server processing when generating pages and responses.
  6. The need to account for session expiration and application pool recycling on the server.

Another con that typically comes to mind when considering developing websites is cross-browser capability.

Fortunately this is not a concern in the kiosk environment since the kiosk is restricted to only run a single web browser. In other words, the kiosk user doesn’t get to pick their web browser, they use whatever web browser the kiosk is setup for.

 https://blog.kiosksimple.com/2014/08/11/5-reasons-to-develop-your-kiosk-application-as-a-website/

 

5 Reasons to Develop Your Kiosk Application as a Website - The KioskSimple Blog

In a previous article on getting started developing kiosk software I briefly covered my thoughts on the pros and cons of developing kiosk applications as a website vs. a native Windows application. It boils down to a case of client-side vs. server-side and

blog.kiosksimple.com

 

반응형
반응형

한국어로 배우는 리액트


https://reactjs.org/


Let's learn React in Korean!!! (⚛ + :kr: = :smiling_imp: :smiling_imp: :smiling_imp:)


https://github.com/reactkr/learn-react-in-korean



한국어로된 리액트 관련 포스팅이나 웹사이트의 모음입니다. 현재 직접 링크를 모으고 있습니다. PR은 언제나 환영입니다.

입문

처음 리액트를 접하시는 분들께 추천할만한 글들입니다.

추천

리액트를 100% 활용하기 위해 꼭 읽어 볼 만한 내용들 입니다.

React

Redux

Blogs

리액트와 관련된 좋은 리소스를 제공하는 블로그들입니다.

...

반응형
반응형

Popper.js: Create poppers in web applications



Popper.js is a library for creating poppers in web applications. You can easily position tooltips, popovers, and more with just one line of code.

popper.js







.

반응형
반응형

sQuery is a small library of chain methods “in a jQuery way” for Sketch. It makes the selection and filter task a little easier.

squery

 

 growing small library of chain methods "in a jQuery way" for Sketch to make the selection and filter task a little easiest :)

반응형
반응형

Mithril: A JavaScript application framework

Mithril is a framework for building awesome JavaScript applications. It’s only 3kb gzipped, has no dependencies, has a small API, is easy to learn, and has safe-by-default templates.

mithril


Mithril  - http://lhorie.github.io/mithril/

A Javascript Framework for Building Brilliant Applications

See the website for documentation

 

 

반응형
반응형

Martini: Web development with Go

 

Martini makes web development with Go much easier. It has a flexible routing layer, comes with a set of stock middleware, and can leverage open source web packages built in Go.

martini

 

Martini is a powerful package for quickly writing modular web applications/services in Golang.

package main

import "github.com/codegangsta/martini"

func main() {
  m := martini.Classic()
  m.Get("/", func() string {
    return "Hello world!"
  })
  m.Run()
}

Install the package (go 1.1 and greater is required):

go get github.com/codegangsta/martini

Join the Mailing list

Watch the Demo Video

Features

  • Extremely simple to use.
  • Non-intrusive design.
  • Play nice with other Golang packages.
  • Awesome path matching and routing.
  • Modular design - Easy to add functionality, easy to rip stuff out.
  • Lots of good handlers/middlewares to use.
  • Great 'out of the box' feature set.
  • Fully compatible with the http.HandlerFunc interface.

More Middleware

For more middleware and functionality, check out the martini-contrib repository.

Table of Contents

반응형
반응형

RocksDB: Persistent key-value store for fast storage http://ow.ly/2BzPfY

 

RocksDB: Persistent key-value store for fast storage

Embedded key-value store for fast storage

rocksdb

Homepage: http://rocksdb.org/
GitHub: https://github.com/facebook/rocksdb
Docs: http://rocksdb.org/overview.html

 

 

The rocksdb library provides a persistent key value store. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function.

The library is maintained by the Facebook Database Engineering Team, and is based on leveldb, by Sanjay Ghemawat and Jeff Dean at Google.

This overview gives some simple examples of how RocksDB is used. For the story of why RocksDB was created in the first place, see Dhruba Borthakur's introductory talk from the Data @ Scale 2013 conference.

 

 

 

반응형

+ Recent posts