В файле ассоциации сайта приложения Apple, почему "НЕ" не исключает упомянутый путь?

Я добавил универсальные ссылки в свое приложение iOS

messages http://somesite.com/message/list/ >> opens the app to messages 
review   http://somesite.com/review/add/   >> opens the app to review 
place    http://somesite.com/place/add/    >> opens the app to place 
photo    http://somesite.com/photo/add/    >> opens the app to photo

все работает, как и ожидалось, мой вопрос: как исключить пути или URL, таким образом, что он никогда даже не открывает приложение?

например

somepage   http://somesite.com/somepagelink   >> SHOULDN'T OPEN APP, it must show up in the browser.

файл ассоциации сайта приложений Apple

{
    "applinks": 
    {
        "details": [
        {
            "paths": ["*", "NOT /somepagelink/*"],
            "appID": "ID1.myApp"
        }, 
        {
            "paths": ["*", "NOT /somepagelink/*"],
            "appID": "ID2.myApp"
        }],
        "apps": []
    },
    "activitycontinuation": 
    {
        "apps": ["ID1.myApp","ID2.myApp"]
    }
}

это правильный путь для исключения пути?

"NOT /somepagelink/*"

2 ответа

Решение

Да, ваш синтаксис правильный, но:

В документации Apple говорится, что порядок заявления важен.

Поскольку система оценивает каждый путь в массиве путей в указанном порядке - и останавливает оценку при обнаружении положительного или отрицательного совпадения - вы должны указать пути с высоким приоритетом перед путями с низким приоритетом.

Первым утверждением, которое он оценивает в вашем файле, является звездочка "*", которая сигнализирует "да, каждый URL разрешен". Тогда это закончится и откроет приложение.

Так может быть, попробуйте наоборот?

"paths": ["NOT /somepagelink/*", "*"],

С нашей стороны это не было проблемой CDN. Оказывается, отрицательные пути можно определить несколькими способами. Указание их ОБЕИХ способов помогло.

Допустим, у нас есть приложение, в котором:

  • Основной домен НЕ должен открываться под приложением
  • Все под /customerдолжен быть открыт в приложении, за исключением
  • Все под /customer/not_includedНЕ следует открывать в приложении

Окончательный файл ассоциации сайта-приложения-яблока:

      {
  "applinks": {
    "apps": [],
    "details": [
      {
        "appIDs": [
          "[APPID]"
        ],
        "appID": "[APPID]",
        "components": [
          {
            "/": "/customer/not_included/*",
            "exclude": true,
            "comment": "not_included exluded"
          },
          {
            "/": "/customer",
            "exclude": true,
            "comment": "Customer exluded"
          },
          {
            "/": "/customer/",
            "exclude": true,
            "comment": "Customer exluded"
          },
          {
            "/": "/customer/*",
            "comment": "Customer sub pages included"
          }
        ],
        "paths": [
          "NOT /customer/not_included/*",
          "NOT /customer",
          "NOT /customer/",
          "/customer/*"
        ]
      }
    ]
  },
  "webcredentials": {
    "apps": [
      "[APPID]"
    ]
  }
}

В вашем случае важной частью является то, что есть обаNOTпуть иexclude: trueкомпоненты, которые выглядят избыточными, но если мы опустим любой из них, логика, похоже, будет нарушена.

Другие вопросы по тегам