powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Разработка под мобильные платформы [игнор отключен] [закрыт для гостей] / Передача информации между устройствами, на которых стоит разрабатываемое приложение.
8 сообщений из 8, страница 1 из 1
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39664939
justcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Разрабатываю приложение под Android на котлине. Для простоты пусть будет список рецептов блюд (СРБ).

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

т.е. чтобы я нажал на рецепт "Пирога", поделиться, у меня открылось окно с контактами (как в воцапе, вайбере) и я отправил человеку рецепт этого пирога.

Как по задумке я хочу это сделать (ранее никогда такого не делал, так что не судите строго):

1) Человек качает мое приложение
2) Ведет учет пирогов
3) В какой-то момент решил воспользоваться функцией шаринга рецептов
-Чтобы ему это сделать он должен авторизоваться, для этой цели я задействовал GoogleSignInApi.
Код: java
1.
2.
        GoogleSignInAccount acct = result.getSignInAccount();
	String authCode = acct.getServerAuthCode();


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

-Если этот код у человека есть, то я разрешаю ему выполнять запросы на свой сервер.

4) Свой сервер. Свой сервер это спринг бутовое приложение. С простенькой базой из двух-трех таблиц, которые держат в себе узеров, и сообщения с рецептами пирогов. У сервера есть рест апи контроллеры.

5) Пользователь, первый раз обращается к моему серверу, для того чтобы узнать а не прислал ли ему кто-нибудь рецепт пирога.
Если первый раз обращаюсь к своему серверу, то отсылаюему гугловский код
Код: java
1.
String authCode



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


А теперь вопросы:
1) Самое главное, у меня не четкого понимания какую информацию о клиентах хранить в базе данных моего сервера.

Допустим, я храню номер телефона

1| Ivan| +7-911...| ivan@gmail.com
2| Petr |+7-904....| petr@gmail.com

Для того чтобы понять является ли Petr мои другом, есть два варианта:

Я отсылаю своему серверу, всю адресную книгу, и он матчит по номеру моих контактов, что petr в моих контактах есть, и что petr на моем сервер есть, а значит petr мой друг. И сервер слинкует petr c ivan
Признаться честно, не могу сказать является ли это нормальным решением отсылать все номера на сервер для постороения дерева друзей.
Мой сервер отсылает мне всех узеров, для постороения дерева друзей в локальной базе телефона. По мне так это никуда не годится, так как могут быть много пользователей на моем сервере.

Скажите пожалуйста, вариант один корректен, если нет то как такие вещи решаются и куда смотреть?

Также непонятно какой, номер сохранять? , допустим у меня две симки. Какой номер туда сохранять? Или добавить поле в таблицу phone2, трех симочных телефонов я не видел.

2) При беглом взгляде не нашел как провалидировать полученный от гугла acct.getServerAuthCode();, есть ли такая возможность валидации этого кода?

3) Где хранить токены? В локальной базе или preferences, чтобы допустим злоумышленник из телефона токен/код от гугла не вытащил?

4) Общая архитектура по шарингу данных через интернет предложенная мной валидна или нет, покритикуйте пожалуйста.
С радостью услышу дельные советы или куда смотреть.
...
Рейтинг: 0 / 0
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39665052
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К чему такие сложности? Получается, что делиться можно только с тем, у кого есть приложение?

Я-бы сделал иначе: сервис хранения данных пользователя с веб-мордой, доступной для тех, у кого нет приложения.
В таком случае шарилась-бы ссылка на рецепт и если нет приложения, ответственного за сайт, то ссылка открывается браузером. Либо через instant app, тоже становится стандартом.

Либо без сервера, шаринг текстового описания рецепта.
...
Рейтинг: 0 / 0
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39665562
justcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне не нужна веб морда, поэтому у меня только рест апи и все.

Хорошо, смотрите. Вот я открываю воц ап, и хочу общаться только с теми у кого есть воцап. И у меня показываются только те контакты в воцапе которые там зареганы.
Если посмотреть на вайбер, там схожая картина, там показана все контакты и у которых вайбера нет стоит кнопка - пригласить.

Я хочу добиться того же. Только буду обмениваться не сообщениями а рецептами.
Причем хочу чтобы я мог делиться с конкретным человеком рецептом. Мы же в воцапе передаем сообщение конкретному узеру, а не всем подряд.

Вот поэтому и спрашиваю как храрятся и где хранятся контакты, как они синхронизируются. Может кто то делал нечто подобное.
...
Рейтинг: 0 / 0
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39665747
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У ватсапа, вайбера и прочих есть "приглашение" - это смс (и не только) другу. Так же через твитеры, фейсбуки и т.п. со ссылкой в магазин. Далее устанавливается приложение и уже не нужны "шары" сообщений, т.к. далее идет обмен непосредственно через приложение.

Каким образом в вашем решении будет выглядеть "приглашение"?

П.С. Мессенджеры имеют доступ к контактам, выгружают их на свои сервера и анализируют на предмет "совпадений".
...
Рейтинг: 0 / 0
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39666214
justcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman, спасибо за ответ.

Wadman, да я и не хочу ни кого приглашать. Т.е. допустим,

Меня зовут Ivan - мои Друзья Petr, Dima.

Ivan - установил приложение
Dima - тоже.

Теперь при запуске приложения у Ivan и Dima на сервере произойдет синхронизация, которая скажет что Ivan и Dima друзья.
Ivan и Dima могут в рамках моего приложения меняться рецептами. И приглашать ни кого не буду.
Эдакая "Ленивая загрузка встреча друзей".

авторДалее устанавливается приложение и уже не нужны "шары" сообщений, т.к. далее идет обмен непосредственно через приложение.
Не совсем понятно, как происходит обмен между двумя устройствами с установленным приложением через это приложение без внешнего сервера. Или что имеется в виду под "шарой" ?
...
Рейтинг: 0 / 0
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39666307
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justcoderТеперь при запуске приложения у Ivan и Dima на сервере произойдет синхронизация, которая скажет что Ivan и Dima друзья.
Каким образом Иван и Дима поймут, что они друзья? Или друзьями становятся все, кто установил приложение?

justcoderИли что имеется в виду под "шарой" ?
Разделение ресурса, в данном случае обмен рецептами. Когда есть приложение, обмен идет через него. Когда его нет, используются иные ресурсы: твиттер, фейсбук, веб.

По моему, без веба никак: это должно быть основой, а приложение лишь облегчает принцип работы с рецептами.
Захотел Иван отправить рецепт Диме, отправил ему ссылку из приложения на веб. Если у Димы стоит приложение, то андроид предложит его запустить. Если не стоит, то откроется браузером, где разработчик предусмотрел ссылку на гугломаркет, откуда при желании можно загрузить приложение.

Это по сути стандартное (ожидаемое) поведение.

Либо контакты будут друг другу добавляться "руками" по логинам (как было в аське), что на мой взгляд, немного устарело.
А если рецептом очень хочется поделиться через ВК или иную социальную сеть? Веб опять же хорош. Если еще сайт будет поддерживать http://ogp.me/ то ВК будет и красивые нужные картинки с описаниями показывать в превью, побуждая людей пользоваться приложением.
...
Рейтинг: 0 / 0
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39666846
justcoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,
авторКаким образом Иван и Дима поймут, что они друзья? Или друзьями становятся все, кто установил приложение?
Да. Все верно, но с поправкой. Если в телефоне в контактах у Димы есть друг Иван, а у Ивана есть друг Дима, то когда каждый из них
установит приложения, то их контакты полетят на сервер, ну и соответственно если они там сматчатся, то сервер в базе у себя пометит что они мол друзья.

Сервер при первом запуске установленного приложения скажет: "Дима, ты только что установил приложение. Приложение мне твои контакты отправило, я их прошерстил и обнаружил, что твой друг Иван уже установил меня, он твой друг потому что в его телефонах есть ты,я это из своей базы узнал, а значит теперь через меня Ивану ты можешь слать рецепты.". Соответственно, сервак ответит Диме, что из всех его контактов приложение установил только Иван, ну и приложение отрисует листбокс с Иваном, и рядом с ним будет кнопку "Поделиться".
Уверен так реализовать можно, и не нужна мне никакая веб морда.
Не нравится, что отсылать придется контакты, да и логика по их синхронизации - писать ее, да и трафик жрать будет....

wadman,
Я решил прислушаться к вашему решению и понять его более глубоко. Я правильно понимаю, что вы имеете в виду следующее:

-Дима установил приложение. Хочет поделиться с Ваней
Дима говорит - поделиться. В этот момент данные с рецептом идут на сервер, т.е. на сервер идет [recipeAsStr:берем мясо 10 кг].
Сервер получает данные от Димы, сохраняет их в базу и генерирует уникальную ссылку, например
Код: html
1.
http://bestrecipes/recipe/345


Отправляет ссылку обратно приложению Димы. Дима отсылает ссылку Ване.

-Ваня получает ссылку, Ваня берет и открывает ее.
Я точно сказать не могу, можно ли ссылку открыть приложением, так как пока, что опыта с этим не было, но судя по тому, что вы пишете, наверное как-то можно "заставить ссылку с определенным паттерном открываться приложением".
Если у него нет приложения, то ничего страшного откроет ее броузером. И броузер отрендерит простенькую табличку.

Я вас верно понимаю? Если да, то очевидный плюс вашего решения - нет всей этой муры с контактами, друзьями/не друзьями. Оно простое, легче запилить, мне нравится. Буду идти в этом направлении, но

Мне вот что непонятно
авторЗахотел Иван отправить рецепт Диме, отправил ему ссылку из приложения на веб.
Не понимаю через что Иван, отправит Диме ссылку, через воцап или смс? Не понимаю..
...
Рейтинг: 0 / 0
Передача информации между устройствами, на которых стоит разрабатываемое приложение.
    #39666915
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justcoderЯ правильно понимаю, что вы имеете в виду следующее:
Фактически все так. Можно настроить приложение на открытие конкретного сайта.
Это описывается в манифесте и так многие приложения делают.
https://developer.android.com/training/app-links/deep-linking
justcoderНе понимаю через что Иван, отправит Диме ссылку, через воцап или смс?
Через любое приложение, которое умеет передавать текст:
https://developer.android.com/training/sharing/send как работает кнопка "Поделиться" в любом приложении.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Разработка под мобильные платформы [игнор отключен] [закрыт для гостей] / Передача информации между устройствами, на которых стоит разрабатываемое приложение.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]