Я хотел бы настроить систему рефералов в своем приложении, чтобы пользователи могли приглашать своих друзей по электронной почте / по номеру телефона и т. Д. (В зависимости от того, что проще), и когда будет подтверждено, что приглашенный установил приложение, оно будет вознаграждено оригинальный отправитель приглашения, скажем, месяц без баннеров.
Единственная ссылка, которую я могу найти в Интернете, это: https://pub.dev/packages/firebase_dynamic_links#-readme-tab-
Я не уверен, что это то, что мне нужно, и, к сожалению, поскольку он был создан командой Flutter, он предлагает ровно 0 объяснений о том, как на самом деле реализовать что-либо из этого, так как они ожидают, что вы уже будете профессиональный штатный кодер, способный заполнить все пробелы для себя.
Кто-нибудь настраивал это раньше? Это правильный плагин для того, что я после? У кого-нибудь есть лучшие ресурсы? Любой указатель в правильном направлении будет принята с благодарностью!
Edit:
Переход по пути динамических ссылок Firebase. Первое препятствие, с которым я столкнулся, это необходимость владения доменом, чтобы я мог создавать URL-адреса для динамических ссылок. Поэтому вчера вечером я зарегистрировал себе домен и настроил его в соответствии с требованиями Firebase, чтобы он был проверен и подключен к Проект Firebase (он пошагово проделывает это, и кажется, что все работает нормально, просто может потребоваться дать вашему DNS-хосту время, чтобы отразить изменения TXT и A, необходимые для этого процесса).
Так что теперь у меня есть пустой, проверенный домен с именем example.com
В Firebase теперь, под проектом, который я создал, внизу слева находится кнопка с именем Dynamic Links. Для этого требуется, чтобы example.com был проверен теми записями A, которые вы уже вводили ранее, но после проверки это позволит вам создать новую динамическую ссылку.
Здесь есть 5 шагов:
Шаг 1) Он предлагает вам короткую ссылку на URL. В моем случае: example.com/gd7W я принял это и нажал следующее.
Шаг 2) Настройте динамическую ссылку. Он запрашивает URL-адрес Deep Link и имя динамической ссылки. В моем случае я использовал example.com/apps/refer_a_friend, и вы можете дать Dynamic Link любое имя, которое вам нравится. Я только что назвал мой "Пригласи друга". Хит следующий.
Шаг 3) Определите поведение ссылок для iOS. Я просто оставил его как "открыть глубокую ссылку в браузере"
Шаг 4) Определите поведение ссылок для Android. Я просто оставил его как "открыть глубокую ссылку в браузере"
Шаг 5) Отслеживание кампании, социальные теги и дополнительные параметры. Похоже, что этот материал не важен на данном этапе, а не для того, что требуется для этого поста, а просто для того, чтобы все заработало. Этот материал предназначен для аналитики и отслеживания вашего продвижения, когда оно работает. Вы можете вернуться и отредактировать его позже.
Таким образом, на шаге 2 URL-адрес Deep Link, на который я ссылался, фактически не существует. Я не уверен, если это предполагается. Если я собираюсь создать эту страницу на своем веб-сайте, но если да, то что я должен разместить на этой странице? В настоящее время я думаю, что мне следует создать на своем сайте перенаправление с этого адреса на URL-адрес магазина Google Play для приложения. Я пробовал это, но это не перенаправление.
Затем снова вернемся к примеру приложения (и здесь я имею в виду пример, над которым мы работаем, в комментариях ниже, которые получены здесь: https://github.com/flutter/plugins/tree/master/packages/firebase_dynamic_links/example).
Я полагаю, что этот раздел нам нужен, так как он требует редактирования, чтобы соответствовать вашим собственным ссылкам и адресам из ваших предыдущих шагов:
final DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'https://cx4k7.app.goo.gl',
link: Uri.parse('https://dynamic.link.example/helloworld'),
androidParameters: AndroidParameters(
packageName: 'io.flutter.plugins.firebasedynamiclinksexample',
minimumVersion: 0,
),
dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
),
iosParameters: IosParameters(
bundleId: 'com.google.FirebaseCppDynamicLinksTestApp.dev',
minimumVersion: '0',
),
);
Я изменил этот раздел кода, чтобы попытаться сопоставить мою работу выше, поэтому обновился до этого:
final DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'https://example.com/gd7W',
link: Uri.parse('https://example.com/apps/refer_a_friend'),
androidParameters: AndroidParameters(
packageName: 'company01.appname', //The appID of my app on the store
minimumVersion: 0,
),
dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
),
iosParameters: IosParameters(
bundleId: 'company01.appname', //The appID of my app on the store
minimumVersion: '0',
),
);
Когда я запускаю приложение и нажимаю кнопку «Получить короткую ссылку», в журналах появляется следующая ошибка:
PlatformException(short_link_error, 400: Your project does not own Dynamic Links domain: https://example.com
То, что я не уверен, является правильной ошибкой, так как в консоли Firebase этот домен проверен и в настоящее время подключен. Похоже, работает нормально. Мне интересно, если реальная проблема заключается в том, что моя глубокая ссылка ничего не делает на данный момент, и, как я уже говорил, я не совсем уверен, что он должен делать.
Надеюсь, что это достаточно подробно, чтобы проследить мою работу до этого момента.
Редактировать 2:
Просто добавлю, что когда я нажимаю кнопку Получить длинную ссылку, на самом деле, кажется, что-то возвращает,очень длинный URL-адрес, который выглядит примерно так:
https://example.com/gd7W?amv=0&apn=company01.appname&ibi=company01.appname&imv=0&link=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcompany01.appname%26hl%3Den
, который выглядит как все компоненты, которые я указал в различных точках, но, возможно, неправильно.Хотя это похоже на прогресс!
Редактировать 3:
Я потратил весь день на изучение каждого примера, который смог найти.Ни один из них не говорит мне, каким должен быть URL-адрес динамической ссылки, как его создать, где он должен указывать или что с ним делать.Кажется, это недостающее звено в работе.
У кого-нибудь был какой-нибудь успех в настройке этого?Теперь, когда мы достигли этой точки, звучит только крикет.
Редактировать 4:
Я знаю, что многие люди читали эту ветку, поэтому я хотел бы иметь возможностьдать вам рабочий пример.Я не получил достаточно помощи с этим, так что я никогда не получал это работает.Мне пришлось полностью удалить рефералов из моего приложения, чтобы я мог уложиться в срок.Извините всех, кто разочарован этим результатом, вы не будете разочарованы больше, чем я.