2016-07-28 57 views
16

我剛剛接到了來自谷歌以下電子郵件播放谷歌播放警告谷歌的錯誤方面發揮應用程式內計費

「你好谷歌Play開發者,

我們發現您的應用程序(S)在年底上市的電子郵件地址是 而不是針對意圖設置目標包 來調用應用內結算服務。這可以使惡意軟件包繞過Play商店計費系統並訪問尚未購買的物品。

下一步

如果使用IabHelper,請開始使用最新的SDK。如果您手動調用應用內結算服務 ,請確保您調用Intent.setPackage(「com.android.vending」) 「com.android.vending.billing.InAppBillingService.BIND」。登錄到 開發者控制檯並提交應用的更新版本。 五個小時後再回來查看 - 如果應用程序 尚未正確更新,我們會顯示一條警告消息。'

我不確定這個問題的修復程序是什麼。任何人都可以告訴在哪裏指定代碼?它在Java Class還是Manifest中?

回答

3

我前幾天收到了同樣的警告,已經設置包的意圖是這樣的:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 
serviceIntent.setPackage("com.android.vending"); 
bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE); 

問題已通過更新到谷歌最新版本的播放服務,並針對棒棒糖消失(5.1)而不是KitKat(4.4)...如果您使用的是Google Play Apis,請確保將它們更新爲最新版本,並希望能夠爲您解決它。

+0

那麼這個包已經被指定了,但是我仍然更新了Play服務以及AIDL文件和IAP Helper,但是Notification並沒有被刪除。現在還能做什麼? –

0

修復程序將在您的Java中。通過動作"com.android.vending.billing.InAppBillingService.BIND"搜索您的代碼庫中的Intent,將其傳入構造函數或通過Intent.setAction()進行設置。在以此意圖呼叫bindService()之前,您必須通過Intent.setPackage()明確設置包裹。

下面是谷歌的代碼示例作爲參考:https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L296

3

我們也已經收到此警報,並檢查了我們的apk。 我們發現Google-Play-Service.jar的舊版本似乎使用了「com.android.vending.billing.InAppBillingService.BIND」的意圖,並沒有設置setPackage。

我們也檢查了最新的Google-Play-Service.jar,這個很好,所以我建議檢查一下你的庫。

+0

你在什麼版本,你轉向什麼? –

+0

那麼這個包已經被指定了,但是我仍然更新了Play服務以及AIDL文件和IAP Helper,但是仍然沒有刪除通知。現在還能做什麼? –

+0

好的。我沒有懷疑Google圖書館有問題。所以基本上,在我的情況下谷歌把警報在開發者控制檯說,我的應用程序有漏洞,但實際上它是他們的庫代碼。他們可能會發電子郵件說:「請更新我們的圖書館,我們在那裏犯了可怕的錯誤,我們很抱歉,這不會再發生,乾杯 - 這裏的麻煩是$ 50; p」。我只是很苛刻,因爲我已經花時間搞清楚了這一點。 – Wojciech

2

您必須從與去年SDK更新IabHelper文件:

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util

當您覆蓋舊文件時,Eclipse或Android Studio會顯示錯誤,你必須解決這些問題,比如加試捕,或者添加一個參數給queryInventory函數。

如果您更改了新文件,請記住更新軟件包名稱。

編輯:最後,我需要更新包含在我的項目中的google_play_services.jar庫。更新後,此通知警報已隱藏。我正在使用一箇舊的谷歌播放服務庫。現在我正在使用rev 28版本。

+0

那麼這個包已經被指定了,但我仍然更新了Play服務以及AIDL文件和IAP助手,但仍然不會刪除通知。現在還能做什麼? –

+0

閱讀我最後一次編輯,如果您將它包含在您的項目中並且它是舊版本,則必須更新Google Play服務庫。 – jlgsoftware

0

沒有測試這個解決方案,但您可能還是會嘗試一下:在 https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L297serviceIntent.setPackage("com.android.vending.billing.InAppBillingService.BIND");更換 serviceIntent.setPackage("com.android.vending");或任何你有setPackage事情。乾杯。

UPDATE:只需更新Google Play服務庫,爲我工作。乾杯。

+0

那麼這個包已經被指定了,但是我仍然更新了Play服務以及AIDL文件和IAP Helper,但是Notification並沒有被刪除。現在還能做什麼? –

2

搜索以下代碼語句的整個代碼庫。

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 

無論您使用上述意圖,不要忘了添加下面serviceIntent.setPackage("com.android.vending");

了。在我的整個代碼庫上面的意圖兩次出現,一次是在IabHelper Java文件是該代碼如果u使用應用計費SDK最新的,這句話會被已經加入,另一個發生,我用這個意圖,以檢查是否應用程式內結帳服務是可用的,我已經忘了加上serviceIntent.setPackage("com.android.vending");,一旦我想通了這一點,並更新了我的應用程序在開發人員控制檯中,幾小時後警告消息被刪除。

+0

那麼這個包已經被指定了,但是我仍然更新了Play服務以及AIDL文件和IAP Helper,但是Notification並沒有被刪除。現在還能做什麼? –

0

有三點要解決這個問題。

  1. 在您的代碼中找到com.android.vending.billing.InAppBillingService.BIND。讓每一個意向該呼叫的方法Intent.setPackage(「com.android.vending」).
  2. IabHelper更新SDK。
  3. 更新Google Play服務庫項目。 確保這些事情都正確完成。每一個點都會導致這個問題。如果問題仍然存在,那麼您的項目中的其他罐子可能有問題。
+0

每件事情都已完成並驗證多次,但通知仍然存在。 –

+0

我認爲你可以創建一個新的測試應用程序,只有與罐子。如果你的測試應用程序出現waring,這意味着問題出現在你的罐子裏。如果沒有,這意味着問題出現在您的代碼中。 @JawadAmjad – ColdenBean

+0

這似乎不是一個實際的解決方案,因爲這需要一個應用程序正確發佈。測試應用程序無法發佈,它會被Google Play團隊拒絕 –

0

我收到了同樣的警告。結合InAppBillingService時,我已經設置包,但我發現,我被檢查,如果InAppBillingService存在這樣的:

boolean inAppBillingAvailable = !getPackageManager().queryIntentServices(new Intent("com.android.vending.billing.InAppBillingService.BIND"), 0).isEmpty(); 

確保你也設置在這裏的包:

boolean inAppBillingAvailable = !getPackageManager().queryIntentServices(new Intent("com.android.vending.billing.InAppBillingService.BIND").setPackage("com.android.vending"), 0).isEmpty(); 
0

我終於設法解決這個問題。首先,我更新了IabHelper,但這沒有幫助。然後我注意到在build.gradle中有一個依賴編譯'com.google.android.gms:play-services:6.1.71'。我將其更改爲com.google.android.gms:play-services:9.4.0。這造成了許多編譯錯誤。但是,我沒有使用9.4.0版本的play-services,而是使用了9.4.0版的個人谷歌服務。在我的情況下,只有com.google.android.gms:play-services-auth:9.4.0和com.google.android.gms:play-services-drive:9.4.0。這隻給出了我在代碼中修復的一些編譯錯誤。然後,我推遲了谷歌玩阿爾法,等了2天。警告警報沒有爲我上傳的版本彈出。

謝謝。

編輯:我不認爲我們需要花費很長時間來改變IabHelper.java,因爲它是設置setPackage(「com.android.vending」)。我恢復了IabHelper.java,並且只用9.4上傳了一個版本。0版本的play-services-drive和play-services-auth更改。它沒有發出警告。

0

我有這個問題,不能更新我們在日食中的舊管道。所以我基本上反編譯了Google Play服務的庫,修補了eb.java和dx.java中的漏洞,重新編譯了這兩個文件並將它們放入原始JAR文件中。這解釋了in my blog

0

所有的答案都是正確的。我所做的是更新谷歌播放服務和IAB助手,而不是使用IAB助手我sed谷歌在App購買教程中描述的方法,它修復了通知。