Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Boyek92
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
1

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

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

Как настроить и внедрить подписку в приложении?
https://github.com/googlesamples/android-play-billing
Использовал этот пример, но мне как новичку в этом, совсем не понятно что где и как
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2017, 20:39
Ответы с готовыми решениями:

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

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

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

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

Настройка яркости в приложении
Привет эксперты! Вы не знаете как реализовать настройку яркости приложения и...

8
ExFau$t
682 / 573 / 131
Регистрация: 08.05.2012
Сообщений: 2,826
17.08.2017, 21:36 2
И чего ты хочешь в рамках этой темы, если даже готовый код с простынёй комментариев тебе не понятен?
0
Boyek92
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 15:56  [ТС] 3
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
ExFau$t
682 / 573 / 131
Регистрация: 08.05.2012
Сообщений: 2,826
18.08.2017, 16:43 4
Цитата Сообщение от Boyek92 Посмотреть сообщение
<YOUR_KEY_HERE>
Как бы намекает, что неплохо было бы вставить ключ сюда.
0
Boyek92
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 17:04  [ТС] 5
Цитата Сообщение от ExFau$t Посмотреть сообщение
Как бы намекает, что неплохо было бы вставить ключ сюда.
хорошо, я добавил свой код в приложение, но ошибки так и появляются всё те же
0
ExFau$t
682 / 573 / 131
Регистрация: 08.05.2012
Сообщений: 2,826
18.08.2017, 17:44 6
Где проверял? На эмуляторе? Уверен, что там есть google play services? Разрешение в манифесте прописал? Идентификатор покупки тоже нужно свой вставлять, а не тестовый.

Добавлено через 1 минуту
https://developer.android.com/google/play/billing/index.html
0
Boyek92
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 18:17  [ТС] 7
Цитата Сообщение от 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
ExFau$t
682 / 573 / 131
Регистрация: 08.05.2012
Сообщений: 2,826
18.08.2017, 18:23 8
Цитата Сообщение от Boyek92 Посмотреть сообщение
выдает ошибку о дупликате
Гугл говорит, что надо удалить лишние файлы IInAppBillingService.aidl
0
Boyek92
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 19
18.08.2017, 18:26  [ТС] 9
Цитата Сообщение от ExFau$t Посмотреть сообщение
Гугл говорит, что надо удалить лишние файлы IInAppBillingService.aidl
посмотрел поиском у меня он один
0
18.08.2017, 18:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2017, 18:26

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

Создание Подписки
Всем привет! Я хочу создать на своем блогу подписку,простую класическую...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru