При нажатии на универсальную ссылку, не указывающую полный URL-адрес в Swift xcode

#ios #swift #xcode #deep-linking #ios-universal-links

#iOS #swift #xcode #глубокая привязка #ios-universal-links

Вопрос:

Я внедряю универсальную ссылку в свое приложение. Я выполнил все инструкции по следующей ссылке. Ссылка на создание ASA для создания файла AASA.

Содержимое файла выглядит следующим образом:

 {
"applinks": {
  "details": [
       {
         "appIDs": ["44SGDK39BN.com.app.appname"],
         "components": [
           {
              "#": "no_universal_links",
              "comment": "Matches any URL whose fragment equals no_universal_links and instructs the system not to open it as a universal link"
           },
           {
              "/": "/men/*",
              "comment": "Matches any URL whose path starts with /buy/"
           },
           {
              "/": "/women/*",
              "comment": "Matches any URL whose path starts with /help/website/ and instructs the system not to open it as a universal link"
           },
           {
              "/": "*",
              "comment": "Matches any URL whose path starts with /help/ and which has a query item with name 'articleNumber' and a value of exactly 4 characters"
           }
         ]
       }
   ]
  }
 }
  

он загружается на мой сервер без перенаправления.

мой файл прав похож на изображение ниже. я прикрепил этот файл прав.

файл прав доступа

и включил связанные домены и добавил необходимые домены в подписи и возможностях. следующее изображение ссылается на эту часть.

назначение и возможности и включенные связанные домены

А затем я обновил тип URL-адреса на Info вкладке из Project target explorer

и затем я использую следующий код в AppDelegateClass:

    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
   

       guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
       let url = userActivity.webpageURL,
        
       let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else {
          return false
        }
       print(url)
     
       print("Path string (components.path)")
      }
    }
  

Здесь print(url) печатается только имя домена и print("Path string (components.path)") печатается только / . Я не знаю, где я пропустил. Я хочу полный URL-адрес, когда пользователь нажимает на определенную ссылку.

Пример URL-адреса для универсальной ссылки: www.domainame.com/men/belt/beltname

при использовании ссылки этого типа этот метод печатает только www.domainname.com

мне нужен полный URL. но я столкнулся с этой проблемой. я не мог найти решение за последние два дня. Кто-нибудь находит решение. пожалуйста, предложите мне.

ДОЛЖНО ЛИ ОБРАТНОЕ ДОМЕННОЕ ИМЯ быть идентификатором пакета для приложения? будет ли это проблемой для него?

Мое доменное имя не является обратным именем идентификатора пакета приложений.

Обновить

когда я добавляю параметр, например, следующим образом,

www.domainname.commen?test=test

Я получаю полный путь.

Опять же, я не знаю, где я застрял.

Комментарии:

1. Интересно, говорите ли вы правду. Я бы ожидал, что это будет наоборот: www.domainname.commen даст www.domainname.com результат, потому что обратная косая черта не является символом URL, поэтому URL-адрес будет завершен в этот момент.

2. Кроме того, на вашем месте я бы удалил эти comment записи, потому что они неверны.

Ответ №1:

После долгого поиска я нашел решение для этого.

Было два типа проблем.

  1. соответствующий сертификат разработки iOS для подписи не найден.

Я разобрался и согласовал с клиентом, чтобы сделать это. тогда это решаемо.

  1. Произошло обновление файла ASA. Фактический не работал для меня. я перешел по следующим ссылкам.

использование путей

использование компонента

мне ничего не помогло. затем

Сконструировано, как показано ниже:

 {
  "applinks": {
  "details": [
               {
                 "appIDs": [ "4QE5RGHDNN.com.app.iosapp"],
                 "components": [
                                 { 
                                     "/": "/*",
                                     "comment": "Matches any URL whose path starts with /buy/"
                                 },
                                 {
                                     "/": "*",
                                     "comment": "Matches any URL whose path starts with /buy/"
                                  },
                                ],
                  "paths": [ "*"]
                }
             ]
           } 
   }
  

Приведенный выше файл AASA работает отлично.