Подтвердить что ты не робот

Как разместить кнопку Google Plus +1 внутри кордовой/ионной программы?

Я добавил в приложение +1 кнопку +1: + 1 в Кордове/Ионном

Я использовал этот код:

<div class="g-plusone" data-size="tall" data-href="GOOGLE PLAY STORE LINK TO MY APP"></div>

и

(function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/platform.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();

Я также разрешил api:

index.html:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://apis.google.com">

config.xml:

<allow-navigation href="#" onclick="location.href='https://apis.google.com'; return false;" />

Проблема: Это работает в браузере (ionic serve), но не работает в приложении... Когда я нажимаю ничего не происходит... (нет ошибок...)

В любом случае я могу сделать эту работу над приложением? (ionic run)

Дополнительная информация/информация об отладке:

  • Если я нажал кнопку +1 в Интернете, она не покажет мне красную кнопку в приложении (значит, я уже поделился этой ссылкой) (он не знает, кто я..)
  • Я не хочу делать логин/регистрацию, просто кнопку +1...

Если я добавлю:

<allow-navigation href="*" />

в config.xml, он просит меня войти в систему, когда я нажимаю кнопку +1: (Это не должно) введите описание изображения здесь

Это означает, что кнопка +1 не работает, потому что она "в анонимном браузере", не аутентифицирована с ОС...

Я также создал демонстрационное приложение для Android с поддержкой Android: https://developers.google.com/+/mobile/android/recommend Он отлично работает... (я могу +1 ссылку...)

Мои возможности:

  • В веб-просмотре появится какой-то способ сделать собственное представление Android с кнопкой +1.

  • Сделайте поддельную кнопку +1, и когда она щелкнула, она вызывает плагин, который заставляет кого-то короля запросить/щелкнуть по кнопке реального +1....

  • Любое предложение о том, как это сделать?

Возможны ли какие-либо из этих двух возможностей?

Спасибо за вашу помощь!

4b9b3361

Ответ 1

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

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

Для вашего подкласса CordovaPlugin понадобятся следующие переменные:

private PlusOneButton mPlusOneButton;
private String URL;

Ваш метод выполнения должен выглядеть следующим образом:

public boolean execute(String action, final JSONArray args, final CallbackContext callbackContext) throws JSONException {
    if (action.equals("show")) {//show is the name of the method you call from javascript
        URL = "http://www.phonegap.es";//you should pick it from the plugin params
        mPlusOneButton =  new PlusOneButton(cordova.getActivity());
        mPlusOneButton.initialize(URL, null);

        //you have to run this part making sure you run it on the UI Thread
        cordova.getActivity().runOnUiThread(new Runnable() {
            public void run() {
                cordova.getActivity().addContentView(mPlusOneButton,new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT));


                //position the button wherever you want, you should pick the values from the plugin params
                mPlusOneButton.setX(300);
                mPlusOneButton.setY(300);

            }
        });

    } else {
        return false;
    }
    return true;
}

Наконец, добавьте метод onResume, чтобы обновить статус кнопки.

@Override
public void onResume(boolean multitasking) {
    super.onResume(multitasking);
    mPlusOneButton.initialize(URL, null);
}

Плагин должен будет добавить зависимость com.google.android.gms:play-services-plus

Вы можете сделать это, добавив эту строку в файл plugin.xml

<framework src="com.google.android.gms:play-services-plus:+" />

EDIT: плагин готов https://github.com/jcesarmobile/plusOneButtonPlugin

Чтобы установить его

cordova plugin add https://github.com/jcesarmobile/plusOneButtonPlugin

Чтобы использовать его:

var params = {};
params.url = "http://www.example.com";
params.position = {x:100,y:100};
plusOneButton.show(params);

или

plusOneButton.show("http://www.example.com");

Ответ 2

Ваша проблема заключается в том, что пользователь не вошел в систему со своей учетной записью Google внутри браузера cordova, поэтому, очевидно, вы видите приглашение для входа при нажатии кнопки +1.

Я понимаю, что вы хотите получить доступ к глобальной учетной записи Google, подключенной к пользовательскому телефону/ОС, и использовать ее в своем приложении. Во-первых, вашему приложению нужны учетные данные для доступа к этим данным, тогда они должны быть доступны из браузера cordova. Там этот плагин, который делает это для вас.

В коде инициализации вы можете вызвать window.plugins.googleplus.login(...), который будет запрашивать у пользователя подтверждение (если необходимо) и войти в систему.

Убедитесь, что после входа в систему инициализируется кнопка +1, поэтому состояние отображается правильно. Например (если вы используете jQuery):

$(document).ready(function() {
  loginToGoogle();
  initPlusOneButton();
}

function loginToGoogle() { ... }

function initPlusOneButton() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/platform.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
}