Pular para o conteúdo principal

Deep Links

Deep Links são mecanismos de Interprocess Communication (IPC) que permitem que um link (por exemplo, em um site ou e-mail) abra diretamente uma atividade dentro de um app Android.

Eles melhoram a experiência do usuário ao permitir navegação direta para conteúdo específico, sem precisar navegar manualmente pelo app.

Permite que um app responda a URIs customizadas como app://myapp/products/cpu.

Exemplo de código HTML:

<a href="app://myapp/products/cpu">Ver CPU</a>

Configuração no AndroidManifest.xml:

<activity android:name=".ProductsActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="app"
android:host="myapp"
android:pathPrefix="/products/" />
</intent-filter>
</activity>

Explicando os campos:

  • scheme="app": define o protocolo.
  • host="myapp": define o domínio personalizado.
  • pathPrefix="/products/": define o caminho base aceito pela atividade.

Tratamento no código:

public class ProductActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_planet);

Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();

if (Intent.ACTION_VIEW.equals(action) && data != null) {
String productName = data.getLastPathSegment();

if (productName.equals("cpu")) {
// Buscar e exibir informações do produto "cpu"
}
}
}
}

São versões mais seguras dos deep links. Utilizam URLs HTTPS e exigem verificação de domínio.

Exemplo HTML:

<a href="https://www.myapp.com/products/cpu">Ver CPU</a>

AndroidManifest.xml:

<activity android:name=".ProductsActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"
android:host="www.myapp.com"
android:pathPrefix="/products/" />
</intent-filter>
</activity>

App Links garantem que apenas o proprietário do domínio possa registrar a URL, evitando que outros apps se registrem como handler do link.

Riscos de segurança

  • Qualquer app pode interceptar standard deep links (sem App Links), se o domínio não for validado.
  • Parâmetros maliciosos em URLs podem causar problemas:
https://www.myapp.com/home?uid=50&token=xyz

Sem validação adequada, isso pode dar acesso a dados de outros usuários.

Boas práticas

  • Prefira Android App Links ao invés de esquemas customizados.
  • Sempre valide dados recebidos via Intent.getData().
  • Nunca exponha dados sensíveis via parâmetros de URL.