שימוש בספריית החיובים ב-Google Play עם Unity

הפלאגין לחיוב ב-Google Play מרחיב את השירותים המובנים של Unity נכסים דיגיטליים לרכישות מתוך האפליקציה שנקראים Unity IAP, כדי לספק את המשחק עם כל התכונות העדכניות של ספריית החיובים ב-Google Play. הזה שמסביר איך להגדיר את הפרויקט לשימוש בפלאגין. במדריך הזה גם מוסבר איך להטמיע את התכונות של ספריית החיובים של Google Play במשחק ב-Unity.

הגדרת הפלאגין לחיוב ב-Google Play

כדי להגדיר את הפלאגין, מבצעים את השלבים בכל אחד מהקטעים המקושרים הבאים:

  1. מפעילים את שכבת ההפשטה של Unity IAP.
  2. מורידים ומייבאים את הפלאגין.
  3. קביעת הגדרות ה-build של הפלאגין.
  4. מפעילים את הפלאגין.

הפעלת שכבת ההפשטה של Unity IAP

הפלאגין לחיוב ב-Google Play מבוסס על שכבת הפשטה הכלולה IAP של Unity, לכן צריך להפעיל את שכבת ההפשטה הזו לפני ההורדה ולייבא את הפלאגין. כדי להפעיל את שכבת ההפשטה של Unity IAP, מבצעים את הפעולות הבאות: הבאים:

  1. צריך לבצע את כל השלבים במדריך הבא של Unity: הגדרת הפרויקט לשירותי Unity.
  2. צריך להשלים את כל השלבים במדריך הבא של Unity: הפעלת IAP של Unity .

הורדה וייבוא של הפלאגין

הפלאגין נשלח כחבילת Unity פורמט של .unitypackage. כדי להוריד ולייבא את הפלאגין, מבצעים את השלבים הבאים:

  1. מורידים את הגרסה האחרונה של יישומי הפלאגין של Google Play ל-Unity מהמאגר דף גרסאות ב-GitHub.
  2. בסרגל התפריטים של Unity, לוחצים על Assets > (נכסים >) ייבוא חבילה > חבילה מותאמת אישית

  3. מוצאים מאיפה הורדתם את הקובץ .unitypackage ובוחרים אותו.

  4. בתיבת הדו-שיח ייבוא חבילת Unity, משאירים את כל הנכסים מסומנים ולוחצים על ייבוא.

לאחר ייבוא החבילה, תיקייה חדשה בשם GooglePlayPlugins (בקובץ הרמה הבסיסית (root) של התיקייה Assets) תתווסף לנכסים של הפרויקט. התיקייה הזו מכיל את כל הנכסים של ספריית החיובים ב-Google Play עבור הפלאגין.

קביעת הגדרות build

מכיוון שהפלאגין מרחיב IAP של Unity, Unity ייתקל בהתנגשויות ותכשל ליצור APK של Android, אלא אם יש יחסי תלות ישנים יותר וחופפים ב-Unity IAP יוסרו מה-build. הפלאגין מספק דרך אוטומטית להסיר את ספריות מתנגשות מהפרויקט. כדי לפתור את ההתנגשויות האלה, צריך לפעול לפי את השלבים הבאים:

  1. בסרגל התפריטים של Unity, בוחרים באפשרות Google > חיוב ב-Play > הגדרות Build.

  2. בחלון 'הגדרות של גרסת החיוב ב-Play', לוחצים על תיקון. הפעולה הזו פותרת את הבעיה באופן מתנגש ומעביר את קובצי ה-IAP המתנגשים ב-Unity לספריית גיבוי. אחרי לוחצים על תיקון, הלחצן ישתנה לשחזור, ואפשר ללחוץ עליו כדי לשחזר את הקבצים המקוריים שמתנגשים.

הפעלת הפלאגין

כדי להפעיל את הפלאגין, יש להחליף את אופן ההטמעה של Google Play על ידי Unity IAP עם הפלאגין של Google Play לחיוב. לדוגמה, כשמשתמשים ב-Unity IAP Purchaser סקריפט, צריך לשנות את הStandardPurchaseModule שמועבר אל הכלי ליצירת IAP כדי להשתמש ב-Google.Play.Billing.GooglePlayStoreModule:

// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());

אם במשחק שלכם נעשה שימוש באותו סקריפט רוכשים בכמה פלטפורמות, עליכם להוסיף בדיקת פלטפורמה כדי לוודא ש-Unity תמשיך להשתמש פתרון IAP משלכם לפלטפורמות אחרות:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

אם מפרסמים את המשחק בחנויות אחרות של אפליקציות ל-Android מלבד Google Play Google Store, עליך להחליף את הטמעת ברירת המחדל של IAP של Unity רק כאשר בחרת בחנות Google Play:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
       && SelectedAndoidAppStore == AppStore.GooglePlay)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

הטמעת התכונות של ספריית החיובים ב-Google Play במשחק

הפלאגין חיוב ב-Google Play מרחיב את שירותי IAP של Unity, כך שתוכלו להשתמש אותם ממשקי API של Unity לניהול תהליכי עבודה נפוצים של רכישה. שימו לב שיש מודלים שינויים קלים בהתנהגות ה-API עקב הבדלים בין ספריית החיובים ב-Google Play לבין ה-IAP הרגילה של Unity של חנויות אפליקציות אחרות. אם זו הפעם הראשונה שאתם משתמשים בממשקי Unity IAP של API, ראו: הדף "יצירת סקריפט רכישה" בקטע Unity IAP מדריך דוגמה לאופן שבו אפשר להטמיע תהליכי רכישה בסיסיים.

ספריית החיובים ב-Google Play כוללת גם כמה תכונות ייחודיות לחשבון Google חנות Play. אפשר לגשת לתכונות האלה דרך ממשק מורחב. בהמשך מוסבר איך להטמיע את ספריית החיובים הייחודית ב-Google Play תכונות במשחק.

הפעלת רכישות שנדחו

Google Play תומכת ברכישות שנדחו – שנקראות גם בהמתנה הפרות או בהמתנה רכישות - שבהן המשתמשים יכולים ליצור רכישה ולהשלים אותה מאוחר יותר על ידי הזנת מזומן חנויות.

כדי להפעיל רכישות דחופות, עליך להשתמש בכלי ה-IAP כדי לשנות את המודול מגדירים את התצורה על ידי קריאה ל-method EnableDeferredPurchase():

// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
    .EnableDeferredPurchase();

בשלב הבא, מטמיעים קריאה חוזרת (callback) של רכישות שנדחו באמצעות התוספים של חנות Play:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
    delegate(Product product)
    {
        // Do not grant the item here. Instead, record the purchase and remind
        // the user to complete the transaction in the Play Store.
    });

העברת מזהי חשבון מעורפלים ל-Google Play

אפשר להעביר ל-Google Play מזהים של חשבונות משתמשים שעברו ערפול קוד (obfuscation) כדי להקל על התנהלות פוגעת למשל, זיהוי אם הרבה מכשירים מבצעים רכישות באותו מכשיר החשבון בזמן קצר.

כדי להעביר מספר חשבון מעורפל, צריך להפעיל את השיטה SetObfuscatedAccountId() מ-API של התוספים:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);

העברה של מזהי פרופיל מעורפלים ל-Google Play

אפשר להעביר ל-Google Play מזהה פרופיל מעורפל (obfuscated) כדי להקל על הונאה למשל, זיהוי אם הרבה מכשירים מבצעים רכישות באותו מכשיר החשבון בזמן קצר. הפעולה הזו דומה להעברת ערפול קוד (obfuscation) מזהה חשבון משתמש. בשני המקרים המזהה מייצג אבל מזהה הפרופיל מאפשר לך לזהות משתמש יחיד באופן ייחודי כמה פרופילים שיש להם באפליקציה אחת. אחרי ששולחים מזהה פרופיל מעורפל ב-Google Play, אפשר לאחזר את המזהה הזה מאוחר יותר קבלה על הרכישה.

כדי להעביר מזהה פרופיל מעורפל, צריך להשתמש ב כדי לשנות את תצורת המודול על ידי קריאה ל-IAP, אמצעי תשלום אחד (SetObfuscatedProfileId()):

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);

אישור שינויי מחירים של מינויים

ב-Google Play אפשר לשנות את המחיר של פריט פעיל המינוי. שלך כדי שהשינוי ייכנס לתוקף, המשתמשים במשחק חייבים לאשר כל שינוי במחיר. שפת תרגום ולבקש מהמשתמשים לאשר שינוי במחיר המינוי שלהם, להתקשר אמצעי תשלום אחד (ConfirmSubscriptionPriceChange()):

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
    delegate (bool success)
    {
        // Returns whether the user has accepted the new price or not.
    });

שינויים בהתנהגות של Unity API

כשאתם משתמשים בפלאגין החיוב של Google Play, רוב ממשקי ה-API פועלים בדיוק כמו ההטמעה הרגילה של IAP בחנויות אחרות של אפליקציות. אבל, לפעמים יש מקרים שבהם ממשקי ה-API יפעלו באופן שונה. הקטע הזה מתארת את ההבדלים האלה בהתנהגות.

אין תמיכה במטען הייעודי (payload) של המפתח

המטען הייעודי (payload) למפתחים ב-Google Play הוצא משימוש ומתבצעת החלפה שלו בחלופות שהן משמעותיות יותר ומשמעותיות יותר. לכן המטען הייעודי (payload) של המפתח הוא אין תמיכה. למידע נוסף על חלופות, בקר בדף על מטען ייעודי (payload) של מפתחים.

אפשר להמשיך להשתמש באותם הממשקים שמוגדרים על ידי התקן של Unity הטמעת IAP בחנויות אחרות של אפליקציות, כולל IStoreController. אחרי ש ניתן לבצע רכישה, עדיין אפשר להשתמש ב-IStoreController ולהתקשר אל InitiatePurchase() method:

public void InitiatePurchase(Purchasing.Product product, string payload);

עם זאת, המטען הייעודי (Payload) שמועבר לא ייכנס לתוקף (לא יופיע קבלה סופית).

SubscriptionManager אינו נתמך

IAP של Unity מספקות את SubscriptionManager לניהול מינויים. מפני שההטמעה הרגילה של IAP על ידי Unity המחלקה הזו משתמשת במטען ייעודי (payload) של מפתח, המחלקה הזו לא נתמכת. אפשר עדיין יוצרים את הכיתה הזו, אבל יכול להיות שתקבלו נתונים לא אמינים כשמשתמשים בשיטות getter של הכיתה.

ב-UpdateSubscriptions בוצעו שינויים קלים ב-API

הפלאגין לחיוב ב-Google Play לא תומך בשימוש ב- SubscriptionManager.UpdateSubscription() והקבוצה SubscriptionManager.UpdateSubscriptionInGooglePlayStore() שיטות לשדרוג ותשדרג לאחור את המינויים שלך. אם המשחק מפעיל את השיטות האלה, זריקה של GooglePlayStoreUnsupportedException.

ספריית החיובים ב-Google Play מספקת ממשק API חלופי במקום שיטות. כדי לשדרג או לשדרג לאחור מינוי, צריך להתקשר אל UpdateSubscription() באמצעות מצב יחסי:

void UpdateSubscription(Product oldProduct, Product newProduct,
           GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);

אפשר להעביר את בקשת ה-method הזו באמצעות בדיקת פלטפורמה או בבלוק קליטה כשGooglePlayStoreUnsupportedException נתפס.

לקבלת מידע נוסף ודוגמאות לשימוש במצב יחסי, ראו הגדרת במצב יחסי.