Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19

Настройка подписки в приложении

17.08.2017, 20:39. Показов 2454. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как настроить и внедрить подписку в приложении?
https://github.com/googlesampl... ay-billing
Использовал этот пример, но мне как новичку в этом, совсем не понятно что где и как
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.08.2017, 20:39
Ответы с готовыми решениями:

Покупки, подписки в приложении
Использую библиотеку https://github.com/anjlab/android-inapp-billing-v3 Может кто использовал и знает ответы на мои вопросы?) 1)...

Реализация подписки в приложении
Всем привет. Есть приложение которое можно скачал бесплатно. Хотелось бы реализовать подписку к нему. То есть человек скачал, по...

Подписки на события, интерактивная настройка
Есть видео https://www.youtube.com/watch?v=MTxrZAuBBio Хотелось бы узнать, как такое можно реализовать. Есть ли что-то подобное в...

8
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
17.08.2017, 21:36
И чего ты хочешь в рамках этой темы, если даже готовый код с простынёй комментариев тебе не понятен?
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 15:56  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
 
import com.fourbydevelop.pro_clients.R;
import com.fourbydevelop.pro_clients.util.IabHelper;
import com.fourbydevelop.pro_clients.util.IabResult;
import com.fourbydevelop.pro_clients.util.Inventory;
import com.fourbydevelop.pro_clients.util.Purchase;
 
public class Bro_sub extends AppCompatActivity {
 
    private Button btn_sub;
 
    private static final String TAG = "InAppBilling";
    static final String ITEM_SKU = "android.test.purchased";
    IabHelper mHelper;
 
 
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.brssub);
        getSupportActionBar().hide();
 
        btn_sub = (Button) findViewById(R.id.btn_bro_sub);
 
        String base64EncodedPublicKey = "<YOUR_KEY_HERE>";
 
        mHelper = new IabHelper(this, base64EncodedPublicKey);
 
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            public void onIabSetupFinished(IabResult result) {
                Log.d(TAG, "Setup finished.");
 
                if (!result.isSuccess()) {
                    // Oh noes, there was a problem.
                    complain("Problem setting up in-app billing: " + result);
                    return;
                }
 
                // Have we been disposed of in the meantime? If so, quit.
                if (mHelper == null) return;
 
                // IAB is fully set up. Now, let's get an inventory of stuff we own.
                Log.d(TAG, "Setup successful. Querying inventory.");
                mHelper.queryInventoryAsync(mGotInventoryListener);
            }
 
 
        });
 
        btn_sub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mHelper.launchPurchaseFlow(BroBets_sub.this, ITEM_SKU, 10001, mPurchaseFinishedListener, "mypurchasetoken");
            }
        });
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.i(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
 
// Pass on the activity result to the helper for handling
        if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
            super.onActivityResult(requestCode, resultCode, data);
        }
        else {
            Log.i(TAG, "onActivityResult handled by IABUtil.");
        }
    }
        IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
            @Override
            public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
                if(result.isFailure()){
                    //Handle Error
                    return;
                }else if (purchase.getSku().equals(ITEM_SKU)){
 
                    btn_sub.setEnabled(false);
 
                }
            }
        };
 
 
            IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
                @Override
                public void onQueryInventoryFinished(IabResult result, Inventory inv) {
                    if(result.isFailure()){
 
                    }else {
                        mHelper.consumeAsync(inv.getPurchase(ITEM_SKU), mConsumeFinishedListener);
                    }
                }
            };
 
 
 
    IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
        @Override
        public void onConsumeFinished(Purchase purchase, IabResult result) {
                if(result.isSuccess()){
                    btn_sub.setEnabled(true);
                }else {
 
                }
        }
    };
 
    void complain(String message) {
        Log.e(TAG, "**** TrivialDrive Error: " + message);
        alert("Error: " + message);
    }
 
    void alert(String message) {
        AlertDialog.Builder bld = new AlertDialog.Builder(this);
        bld.setMessage(message);
        bld.setNeutralButton("OK", null);
        Log.d(TAG, "Showing alert dialog: " + message);
        bld.create().show();
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(mHelper != null) mHelper.dispose();
        mHelper = null;
    }
}
При нажатии на кнопку приложение вылетает, в лог ничего не приходит. Скажите пожалуйста что я сделал не так и как это поправить?

Добавлено через 23 минуты
Java
1
08-18 12:53:46.173 22398-22398/com.fourbydevelop.pro_clients E/InAppBilling: **** TrivialDrive Error: Problem setting up in-app billing: IabResult: Billing service unavailable on device. (response: 3:Billing Unavailable)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
08-18 12:54:06.858 22398-22398/com.fourbydevelop.pro_clients E/IabHelper: In-app billing error: Illegal state for operation (launchPurchaseFlow): IAB helper is not set up.
08-18 12:54:06.858 22398-22398/com.fourbydevelop.pro_clients D/AndroidRuntime: Shutting down VM
08-18 12:54:06.858 22398-22398/com.fourbydevelop.pro_clients E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                   Process: com.fourbydevelop.pro_clients, PID: 22398
                                                                                   java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: launchPurchaseFlow
                                                                                       at com.fourbydevelop.pro_clients.util.IabHelper.checkSetupDone(IabHelper.java:782)
                                                                                       at com.fourbydevelop.pro_clients.util.IabHelper.launchPurchaseFlow(IabHelper.java:372)
                                                                                       at com.fourbydevelop.pro_clients.util.IabHelper.launchPurchaseFlow(IabHelper.java:338)
                                                                                       at com.fourbydevelop.pro_clients.BroBets.BroBets_sub$2.onClick(BroBets_sub.java:66)
                                                                                       at android.view.View.performClick(View.java:5637)
                                                                                       at android.view.View$PerformClick.run(View.java:22429)
                                                                                       at android.os.Handler.handleCallback(Handler.java:751)
                                                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                                       at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
18.08.2017, 16:43
Цитата Сообщение от Boyek92 Посмотреть сообщение
<YOUR_KEY_HERE>
Как бы намекает, что неплохо было бы вставить ключ сюда.
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 17:04  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Как бы намекает, что неплохо было бы вставить ключ сюда.
хорошо, я добавил свой код в приложение, но ошибки так и появляются всё те же
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
18.08.2017, 17:44
Где проверял? На эмуляторе? Уверен, что там есть google play services? Разрешение в манифесте прописал? Идентификатор покупки тоже нужно свой вставлять, а не тестовый.

Добавлено через 1 минуту
https://developer.android.com/... index.html
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 18:17  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Где проверял? На эмуляторе?
да, на стандартном эмуляторе android studio.

Цитата Сообщение от ExFau$t Посмотреть сообщение
Уверен, что там есть google play services?
Наверное на стандартном нет, подумал проверить на реальном устройстве, но при Build>Build APK мне выдает ошибку о дупликате, пока что найти не смог в чем проблема
Java
1
2
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.class
Цитата Сообщение от ExFau$t Посмотреть сообщение
Разрешение в манифесте прописал?
Прописал
Java
1
<uses-permission android:name="com.android.vending.BILLING" />
Цитата Сообщение от ExFau$t Посмотреть сообщение
Идентификатор покупки тоже нужно свой вставлять, а не тестовый.
Поставил свой, проблема та же, но теперь не показывает ошибку:
Java
1
08-18 12:53:46.173 22398-22398/com.fourbydevelop.pro_clients E/InAppBilling: **** TrivialDrive Error: Problem setting up in-app billing: IabResult: Billing service unavailable on device. (response: 3:Billing Unavailable)
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
18.08.2017, 18:23
Цитата Сообщение от Boyek92 Посмотреть сообщение
выдает ошибку о дупликате
Гугл говорит, что надо удалить лишние файлы IInAppBillingService.aidl
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 18:26  [ТС]
Цитата Сообщение от ExFau$t Посмотреть сообщение
Гугл говорит, что надо удалить лишние файлы IInAppBillingService.aidl
посмотрел поиском у меня он один
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2017, 18:26
Помогаю со студенческими работами здесь

Создание и настройка формы подписки на рассылку по e-mail
Два дня честно тралил яндекс и ютуб на предмет поиска схемы создания и настройкм подписки на сайте. Ничего путного не попалось - одни...

Настройка яркости в приложении
Привет эксперты! Вы не знаете как реализовать настройку яркости приложения и можно ли вообще это реализовать(для игры)? Ну например с...

Код который работает в консольном приложении в приложении Windows Forms выдает ошибку
Есть код для записи видео с экрана. В консольном приложении он работает, записывает все как нужно. Вставляю код классов в приложение...

БД подписки!
Здравствуйте, друзья :) В общем, мне нужно сделать так, чтобы была форма добавления человека в базу данных, рядом выпадающий список в с...

Подписки на события
Доброго времени суток! Как это работает? Для чего это?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru