Как перенаправить пользователя на мобильное приложение (без браузера) с помощью Django (Universal Link / App Link) с .well-known конфигурацией?

Я работаю над веб-приложением на основе Django, и мне нужно реализовать функцию, при которой пользователи перенаправляются на мобильное приложение напрямую (без использования браузера), когда они посещают определенный URL. Я хочу использовать Universal Links (для iOS) или App Links (для Android) и обеспечить беспрепятственное перенаправление.

Моя установка: Шаблон URL: Я использую URL типа /api/app/login/str:session_token/. URL-адрес мобильного приложения: Я хочу перенаправлять пользователей на URL пользовательской схемы, например myapp://path/to/page/. Текущее представление: Вот мое представление, которое пытается обработать перенаправление:

from django.http import HttpResponseRedirect
from django.views import View

class MobileRedirectView(View):
    def get(self, request, *args, **kwargs):
        # Custom mobile app URL (Universal Link for iOS or App Link for Android)
        mobile_app_url = "myapp://path/to/page/"

        # Redirecting to the mobile app
        return HttpResponseRedirect(mobile_app_url)

Проблема: При попытке перенаправления на URL мобильного приложения с использованием пользовательской схемы (myapp://) я получаю эту ошибку: django.core.exceptions.DisallowedRedirect: Unsafe redirect to URL with protocol 'myapp'.

Я знаю, что Django по умолчанию разрешает перенаправление только на URL http:// или https://, но мне нужно разрешить пользовательские схемы, такие как myapp://.

Цель: я хочу, чтобы перенаправление происходило без использования браузера (непосредственно в мобильном приложении), а также хочу использовать универсальные ссылки / ссылки приложений для iOS и Android соответственно.

Дополнительный контекст: Я создал файлы .well-known, чтобы настроить свое приложение для работы с этими ссылками на мобильных устройствах. Конфигурация .well-known для моих приложений для iOS и Android выглядит следующим образом: Для iOS (внутри apple-app-site-association):

{
  "applinks": {
    "details": [
      {
        "appID": "TEAM_ID.com.myapp",
        "paths": ["/path/to/page/*"]
      }
    ]
  }
}

Для Android (внутри assetlinks.json):

{
  "applinks": {
    "details": [
      {
        "appID": "com.myapp",
        "paths": ["/path/to/page/*"]
      }
    ]
  }
}

Как разрешить в Django перенаправление на пользовательскую схему, например myapp://, и при этом гарантировать, что оно будет обрабатываться непосредственно мобильным приложением (iOS/Android) без использования браузера? Нужно ли настраивать параметры Django, чтобы разрешить перенаправления на пользовательские схемы? Если да, то как? Нужно ли мне модифицировать представление Django или использовать JavaScript для запуска редиректа таким образом, чтобы обойтись без браузера? Могу ли я использовать .well-known файлы для того, чтобы iOS и Android корректно обрабатывали эти ссылки без каких-либо проблем? Есть ли лучший подход к достижению этой цели с использованием универсальных ссылок и ссылок приложений в приложении Django, обеспечивающий перенаправление пользователя непосредственно в мобильное приложение (а не через браузер)? Дополнительная конфигурация: Есть ли какая-нибудь специальная конфигурация Nginx или другой серверной части, которую я должен настроить, чтобы разрешить эти виды перенаправления на сервере? Любая помощь будет очень признательна!

Вернуться на верх