הפלאגין של חיוב ב-Google Play מרחיב את השירותים והנכסים המובנים של Unity לרכישות מתוך האפליקציה, שנקראים Unity IAP, כדי לספק למשחק את כל התכונות העדכניות ביותר של ספריית החיובים ב-Google Play. במדריך הזה מוסבר איך להגדיר את הפרויקט כך שישתמש בפלאגין. במדריך הזה מוסבר גם איך להטמיע את התכונות של ספריית החיוב ב-Google Play במשחק ב-Unity.
הגדרת הפלאגין של החיוב ב-Google Play
כדי להגדיר את הפלאגין, צריך לבצע את השלבים בכל אחד מהקטעים המקושרים הבאים:
- מפעילים את שכבת ההפשטה של Unity IAP.
- מורידים ומביאים את הפלאגין.
- הגדרת הגדרות ה-build של הפלאגין
- מפעילים את הפלאגין.
הפעלת שכבת הפשטה של Unity IAP
הפלאגין של חיוב ב-Google Play מבוסס על שכבת הפשטה שכלולה ב-Unity IAP, לכן צריך להפעיל את שכבת ההפשטה הזו לפני שמורידים ומטמיעים את הפלאגין. כדי להפעיל את שכבת הפשטה של Unity IAP:
- מבצעים את כל השלבים במדריך הבא ב-Unity: הגדרת הפרויקט ל-Unity Services.
- מבצעים את כל השלבים במדריך הבא ב-Unity: הפעלת שירות IAP של Unity.
הורדה וייבוא של הפלאגין
הפלאגין נשלח כחבילת Unity בפורמט .unitypackage
. כדי להוריד ולייבא את הפלאגין:
- מורידים את הגרסה האחרונה של Google Play Plugins for Unity מדף הגרסאות של המאגר ב-GitHub.
בסרגל התפריטים של Unity, לוחצים על Assets > Import Package > Custom Package (נכסים > ייבוא חבילה > חבילה מותאמת אישית).
מאתרים את המיקום שבו הורדתם את הקובץ
.unitypackage
ובוחרים אותו.בתיבת הדו-שיח Import Unity Package, משאירים את כל הנכסים מסומנים ולוחצים על Import.
אחרי ייבוא החבילה, תיקייה חדשה בשם GooglePlayPlugins (ברמה הבסיסית של תיקיית הנכסים) תתווסף לנכסים של הפרויקט. התיקייה הזו מכילה את כל הנכסים של Google Play Billing Library עבור הפלאגין.
הגדרת הגדרות ה-build
מכיוון שהפלאגין מרחיב את Unity IAP, יהיו ב-Unity התנגשויות והוא לא יצליח ליצור קובץ APK ל-Android, אלא אם תסירו מה-build כמה יחסי תלות ישנים וחופפים ב-Unity IAP. הפלאגין מספק דרך אוטומטית להסיר מהפרויקט את הספריות שנמצאות בקונפליקט. כדי לפתור את ההתנגשויות האלה:
בסרגל התפריטים של Unity, בוחרים באפשרות Google > Play Billing > Build Settings.
בחלון Play Billing Build Settings, לוחצים על Fix. הפעולה הזו פותרת את ההתנגשות ומעבירה את קובצי Unity IAP המתנגשים לספריית גיבוי. אחרי שלוחצים על תיקון, הלחצן משתנה לשחזור. אפשר ללחוץ עליו כדי לשחזר את הקבצים המקוריים שנמצאים בקונפליקט.
הפעלת הפלאגין
כדי להפעיל את הפלאגין, מחליפים את ההטמעה של Google Play ב-Unity IAP בפלאגין לחיוב ב-Google Play. לדוגמה, כשמשתמשים בסקריפט של Unity IAP Purchaser, צריך לשנות את StandardPurchaseModule
שמוענק ל-IAP Builder כך שישתמש ב-Google.Play.Billing.GooglePlayStoreModule
:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
אם במשחק שלכם נעשה שימוש באותו Purchaser Script בכמה פלטפורמות, כדאי להוסיף בדיקת פלטפורמה כדי לוודא ש-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, עליכם להחליף את הטמעת ברירת המחדל של Unity IAP רק כשאתם בוחרים בחנות 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 לבין ההטמעה הרגילה של Unity ל-IAP בחנויות אפליקציות אחרות. אם אתם משתמשים חדשים ב-Unity IAP APIs, תוכלו לעיין בקטע 'יצירת סקריפט לרכישה' במדריך ל-Unity IAP כדי לקבל דוגמה להטמעה של תהליכי רכישה בסיסיים.
הספרייה של חיוב ב-Google Play כוללת גם כמה תכונות ייחודיות לחנות Google Play. אפשר לגשת לתכונות האלה דרך ממשק מורחב. בהמשך הקטע הזה נסביר איך מטמיעים את התכונות הייחודיות האלה של ספריית החיוב ב-Google Play במשחק.
הפעלת רכישות מושהות
Google Play תומך ברכישות שמושהות – שנקראות גם עסקאות בהמתנה או רכישות בהמתנה – שבהן המשתמשים יכולים ליצור רכישה ולהשלים אותה מאוחר יותר באמצעות תשלום במזומן בחנויות.
כדי להפעיל רכישות נדחות, משתמשים ב-IAP builder כדי לשנות את ההגדרות של המודול באמצעות קריאה ל-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 מזהי חשבונות משתמשים מעורפלים כדי לזהות התנהלות פוגעת, למשל זיהוי של מכשירים רבים שמבצעים רכישות באותו חשבון בפרק זמן קצר.
כדי להעביר מזהה חשבון מעורבב, צריך להפעיל את השיטה SetObfuscatedAccountId()
מ-Extensions 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 כדי לסייע בזיהוי הונאות, למשל זיהוי של מכשירים רבים שמבצעים רכישות באותו חשבון בפרק זמן קצר. זה דומה להעברת מזהה חשבון משתמש מעורבב. בשני המקרים המזהה מייצג משתמש יחיד, אבל מזהה הפרופיל מאפשר לזהות באופן ייחודי משתמש יחיד במספר פרופילים שיש לו באפליקציה אחת. אחרי ששולחים מזהה פרופיל מעורבב ל-Google Play, אפשר לאחזר את המזהה הזה מאוחר יותר בחשבונית על הרכישה.
כדי להעביר מזהה פרופיל מעורבב, משתמשים ב-IAP builder כדי לשנות את ההגדרות של המודול באמצעות קריאה לשיטה 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 ב-Unity בחנויות אפליקציות אחרות. עם זאת, יש מקרים שבהם ממשקי ה-API יתנהגו באופן שונה. בקטע הזה מתוארים ההבדלים האלה בהתנהגות.
אין תמיכה בתוכן טעון למפתחים
Google Play הפסיקה להשתמש בנתוני עומס העבודה של המפתחים, והיא מחליפה אותם בחלופות משמעותיות יותר ותואמות יותר להקשר. לכן אין תמיכה בתוכן טעון של מפתחים. מידע נוסף על חלופות זמין בדף עומס עבודה למפתחים.
תוכלו להמשיך להשתמש באותם ממשקים שמוגדרים בהטמעה הרגילה של Unity ל-IAP בחנויות אפליקציות אחרות, כולל IStoreController
. כשמתחילים רכישה, עדיין אפשר להשתמש ב-IStoreController
ולקרוא לשיטה InitiatePurchase()
:
public void InitiatePurchase(Purchasing.Product product, string payload);
עם זאת, כל עומס שימושי שתעבירו לא ייכנס לתוקף (לא יופיע בקבלה הסופית).
אין תמיכה ב-SubscriptionManager
ב-Unity IAP יש את הכיתה SubscriptionManager
לניהול מינויים. מכיוון שההטמעה הרגילה של Unity ל-IAP של הכיתה הזו משתמשת ב-payload של מפתחים, הכיתה הזו לא נתמכת. עדיין תוכלו ליצור את הכיתה הזו, אבל יכול להיות שתקבלו נתונים לא מהימנים כשמשתמשים באחת משיטות ה-getter של הכיתה.
יש שינויים קטנים ב-API של UpdateSubscription
בפלאגין של החיוב ב-Google Play אין תמיכה בשיטות SubscriptionManager.UpdateSubscription()
ו-SubscriptionManager.UpdateSubscriptionInGooglePlayStore()
לשדרוג ולשדרוג לאחור של המינויים. אם המשחק קורא לשיטות האלה, מתבצעת הטלה של GooglePlayStoreUnsupportedException
.
ב-Google Play Billing Library יש ממשק API חלופי שאפשר להשתמש בו במקום בשיטות האלה. כדי לשדרג או לשדרג לאחור מינוי, צריך להפעיל את השיטה UpdateSubscription()
במצב חלוקת העלויות:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
אפשר לעטוף את קריאת השיטה הזו בבדיקת פלטפורמה או בבלוק catch כשGooglePlayStoreUnsupportedException
נתפס.
מידע נוסף ודוגמאות לשימוש במצב חלוקת התשלום מפורט במאמר הגדרת מצב חלוקת תשלום.