Привет Я хотел бы узнать о подключаемом модуле Cordova / Phonegap или способе предоставления и обработки глубоких ссылок в моем приложении Sencha Touch / Cordova

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

Используя этот плагин https://github.com/code4jhon/org.apache.cordova.startapp < / а>

Итак, я хотел бы позволить другим приложениям открывать определенные представления или функции в моем приложении. Я хотел бы поддерживать Android и IOS.

Итак, есть ли плагин Cordova для отображения действий для Android и их аналогов на IOS?

Или как этого добиться?

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

12
code4jhon 1 Авг 2014 в 07:19

4 ответа

Лучший ответ

Вы можете попробовать https://github.com/EddyVerbruggen/LaunchMyApp-PhoneGap-Plugin

У меня это сработало отлично.

Не забудьте очистить / построить после установки

Вы можете обрабатывать переменную, реализующую handleOpenURL

function handleOpenURL(url) {
  console.log("received url: " + url);
}
14
Reign.85 28 Ноя 2014 в 11:55
Я пытался определить функцию в независимом файле, предупреждая URL-адрес, но безуспешно ... хммм
 – 
code4jhon
12 Авг 2014 в 07:41
Открытие целевого приложения из другого плагина phonegap github.com/code4jhon/org.apache.cordova.startapp предотвратит срабатывание handleOpenUrl ?
 – 
code4jhon
12 Авг 2014 в 08:00
Вы можете определить функцию handleOpenUrl в вашем index.html перед ссылкой на cordova.js в отдельном теге скрипта. У вас есть несколько альтернатив, это просто вопрос js.
 – 
mentat
12 Авг 2014 в 15:50
Я не использовал плагин startapp, но если вы запустите целевое приложение с правильной схемой, я полагаю, ваш handleOpenUrl должен вызываться, как и ожидалось.
 – 
mentat
12 Авг 2014 в 15:51
К сожалению, я по ошибке присудил награду за другой вопрос, это решение работает.
 – 
code4jhon
12 Авг 2014 в 20:22

Есть новый плагин, который обрабатывает универсальные ссылки как для Android, так и для iOS: https://github.com / nordnet / cordova-universal-links-plugin.

5
MPaulo 30 Сен 2015 в 06:53
Плагин устарел.
 – 
Sohrab Taee
4 Фев 2019 в 16:22

Я смог добиться этого с помощью Branch Metrics. Это новый стартап и супер фантастический.

Ознакомьтесь с их документами по плагину Cordova для глубоких ссылок здесь:

https://github.com/BranchMetrics/Branch-PhoneGap-Cordova-SDK#initialize-sdk-and-register-deep-link-routing-function

Я рекомендую прочитать все их документы, чтобы понять, что делать. Однако с помощью Ionicframework и AngularJS я создал службу, которую вы можете использовать в своем приложении:

https://gist.github.com/sean-hill/627fa40f96577baae378

После создания проекта с помощью подключаемого модуля Branch выполните следующие действия для настройки iOS и Android.

IOS

Добавьте это в свой файл .plist:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>yourappname</string>
        </array>
    </dict>
</array>

Тогда cordova build ios; cordova emulate ios. Чтобы проверить, работает ли он, откройте свой эмулятор, перейдите в Safari, введите yourappname:// и посмотрите, перенаправляется ли он в ваше приложение.

Android

Добавьте это в свой файл AndroidManifest.xml после сборки Android:

<intent-filter>
    <data android:scheme="yourappname" android:host="open" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

Добавьте это в свой файл config.xml:

<preference name="AndroidLaunchMode" value="singleTask" />

Затем создайте снова, и вы должны быть на пути к огромному успеху в области глубинных ссылок!

По запросу @Deminetix я закрываю сеанс Branch.

document.addEventListener("pause", function(){
    var branch = window.Branch;
    branch.closeSession();  
}, false);

Получайте удовольствие от кодирования :)

5
Community 20 Июн 2020 в 12:12
+1 к предпочтениям Cordova config.xml. Вы не используете какие-либо события жизненного цикла, например Branch.closeSession()... почему?
 – 
Deminetix
8 Май 2015 в 10:17
Кроме того, что происходит, когда вы нажимаете ссылку, когда приложение Android находится в фоновом режиме? Он не увидит его, потому что он уже был инициализирован?
 – 
Deminetix
8 Май 2015 в 10:19
Привет @Deminetix, у меня есть события жизненного цикла, так как я только что обновил ответ. В Branch Metrics есть какая-то магия за кулисами, когда пользователь щелкает ссылку Branch на своем телефоне, которая в фоновом режиме создает прямую ссылку на приложение и запускает ваш код.
 – 
sean-hill
11 Май 2015 в 18:39

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

В вашем случае вы пытаетесь разрешить другим приложениям иметь глубокие ссылки в вашем приложении. Это можно было сделать только с помощью фильтра намерений в android и custom-app-url в ios.

appurl.org содержит довольно приятное пошаговое руководство по обработке пользовательских URL-адресов. Взгляните на следующие ссылки

1
Chitranshu Asthana 7 Авг 2014 в 22:44
Спасибо @ChitranshuAstana, это было полезно, но однажды в Android Activity или методе Objective C, как открыть представление Sencha Touch? stackoverflow.com/questions/25223642/… пока не могу понять этот пробел...
 – 
code4jhon
10 Авг 2014 в 03:12
Запускаемая вами активность должна быть получена из CordovaActivity. Вы можете получить wenView и вызвать loadURL. Поскольку вы упомянули, что используете сенчу, я бы порекомендовал вам изучить механизм маршрутизации в сенче. Маршрутизация поможет вам запускать контроллеры diff Sencha по событию.
 – 
Chitranshu Asthana
10 Авг 2014 в 07:14
Спасибо @ChitranshuAstana, это имеет смысл, и да, я смотрел маршруты. Хотя этот подход все равно позволил бы мне решить проблему с ios ... я попробую посоветовать mentat github.com/EddyVerbruggen/LaunchMyApp-PhoneGap-Plugin и вернуться
 – 
code4jhon
10 Авг 2014 в 18:26
Хе-хе-хе, я собирался наградить ментата наградой
 – 
code4jhon
12 Авг 2014 в 20:22
Ой.. Возможна ли отмена?
 – 
Chitranshu Asthana
12 Авг 2014 в 21:13