קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
בתרחישי שימוש כמו ניתוח נתונים או מניעת הונאה במכשיר נתון, יכול להיות שתצטרכו ליצור התאמה בין השימוש או הפעולות בקבוצה של אפליקציות שבבעלות הארגון. Google Play Services מציע אפשרות ידידותית לפרטיות שנקראת מזהה קבוצת אפליקציות.
היקף מזהה קבוצת האפליקציות
מזהה קבוצת האפליקציות יכול להיות מוגדר לאחת מהרמות הבאות. כדי לקבוע לאיזה היקף משויך מזהה מסוים, צריך להפעיל את הפונקציה getScope().
היקף הרשאת הפיתוח ב-Google Play
לגבי אפליקציות שמותקנות על ידי חנות Google Play, ממשק ה-API של מזהה קבוצת האפליקציות מחזיר מזהה ברמת הקבוצה של האפליקציות שפורסמו באותו חשבון פיתוח ב-Google Play.
לדוגמה, נניח שפרסמת שתי אפליקציות באמצעות חשבון הפיתוח שלך ב-Google Play, וששתי האפליקציות מותקנות באותו מכשיר דרך חנות Google Play. האפליקציות חולקות את אותו מזהה קבוצת אפליקציות במכשיר הזה. המזהה זהה גם אם האפליקציות חתומות על ידי מפתחות שונים.
היקף האפליקציה
בכל אחד מהמצבים הבאים, ה-SDK של מזהה קבוצת האפליקציות מחזיר מזהה ייחודי לאפליקציה מבצעת הקריאה עצמה במכשיר נתון:
האפליקציה מותקנת על ידי מתקין שאינו חנות Google Play.
שירותי Google Play לא יכולים לקבוע איזה חשבון פיתוח ב-Google Play משויך לאפליקציה.
האפליקציה מותקנת במכשיר ללא Google Play Services.
לא להסתמך על ערך שמאוחסן במטמון של מזהה קבוצת האפליקציות
אפשר לאפס את מזהה קבוצת האפליקציות של קבוצה מסוימת של אפליקציות שהותקנו במכשיר מחנות Google Play, בכל אחד מהמצבים הבאים:
קבוצות האפליקציות שיש להן אותו ערך מזהה לא ניגשו לממשק ה-API של מזהה קבוצת האפליקציות במשך יותר מ-13 חודשים.
האפליקציה האחרונה מתוך קבוצה נתונה של אפליקציות תוסר מהמכשיר.
המשתמש מבצע איפוס של המכשיר להגדרות המקוריות.
האפליקציה צריכה להשתמש ב-SDK כדי לאחזר את ערך המזהה בכל פעם שנדרש.
הוספת ה-SDK של מזהה קבוצת האפליקציות לאפליקציה
קטע הקוד הבא מציג דוגמה לקובץ build.gradle שמשתמש בספריית מזהי קבוצות האפליקציות:
קטע הקוד לדוגמה הבא מראה איך אפשר לאחזר את מזהה קבוצת האפליקציות באופן אסינכררוני באמצעות Tasks API בשירותי Google Play:
Kotlin
valclient=AppSet.getClient(applicationContext)asAppSetIdClientvaltask:Task<AppSetIdInfo>=client.appSetIdInfoasTask<AppSetIdInfo>task.addOnSuccessListener({// Determine current scope of app set ID.valscope:Int=it.scope// Read app set ID value, which uses version 4 of the// universally unique identifier (UUID) format.valid:String=it.id})
Java
Contextcontext=getApplicationContext();AppSetIdClientclient=AppSet.getClient(context);Task<AppSetIdInfo>task=client.getAppSetIdInfo();task.addOnSuccessListener(newOnSuccessListener<AppSetIdInfo>(){@OverridepublicvoidonSuccess(AppSetIdInfoinfo){// Determine current scope of app set ID.intscope=info.getScope();// Read app set ID value, which uses version 4 of the// universally unique identifier (UUID) format.Stringid=info.getId();}});
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-30 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-08-30 (שעון UTC)."],[],[],null,["For use cases such as analytics or fraud prevention on a given device, you may\nneed to correlate usage or actions across a set of apps owned by your\norganization. [Google Play services](https://developers.google.com/android)\noffers a privacy-friendly option called [*app set ID*](https://developers.google.com/android/reference/com/google/android/gms/appset/AppSetIdInfo).\n\nApp set ID scope\n\nThe app set ID can have one of the following defined scopes. To determine which\nscope a particular ID is associated with, call\n[`getScope()`](https://developers.google.com/android/reference/com/google/android/gms/appset/AppSetIdInfo#getScope()).\n| **Caution:** When Google Play services updates from a version that only supports app scope to a version that supports developer scope, the app set ID's value is reset automatically, without any developer action. See [other reasons developers\n| shouldn't rely on a cached value of the app set ID](#dont-rely-on-cached-value).\n\nGoogle Play developer scope **Note:** The app set SDK attempts to return app set IDs that have the developer scope without any additional developer action, unless the app satisfies the conditions for app scope, described below.\n\nFor apps that are installed by the Google Play store, the app set ID API returns\nan ID scoped to the set of apps published under the same Google Play developer\naccount.\n\nFor example, suppose you publish two apps under your Google Play developer\naccount and both apps are installed on the same device through the Google Play\nstore. The apps share the same app set ID on that device. The ID is the same\neven if the apps are signed by different keys.\n\nApp scope\n\nUnder any of the following conditions, the app set ID SDK returns an ID unique\nto the calling app itself on a given device:\n\n- The app is installed by an installer other than the Google Play store.\n- Google Play services is unable to determine an app's Google Play developer account.\n- The app is installed on a device without Google Play services.\n\nDon't rely on a cached value of app set ID\n\nUnder any of the following conditions, the app set ID for a given set of Google\nPlay store-installed apps on a device can be reset:\n\n- The app set ID API hasn't been accessed by the groups of apps that share the same ID value for over 13 months.\n- The last app from a given set of apps is uninstalled from the device.\n- The user performs a factory reset of the device.\n\nYour app should use the SDK to retrieve the ID value every time it's needed.\n\nAdd the app set ID SDK to your app\n\nThe following snippet shows an example `build.gradle` file that uses the app set\nID library: \n\n dependencies {\n implementation 'com.google.android.gms:play-services-appset:16.1.0'\n }\n\nThe following sample snippet demonstrates how you can retrieve the app set ID\nasynchronously using the [Tasks\nAPI](https://developers.google.com/android/guides/tasks) in Google Play\nservices: \n\nKotlin \n\n```kotlin\nval client = AppSet.getClient(applicationContext) as AppSetIdClient\nval task: Task\u003cAppSetIdInfo\u003e = client.appSetIdInfo as Task\u003cAppSetIdInfo\u003e\n\ntask.addOnSuccessListener({\n // Determine current scope of app set ID.\n val scope: Int = it.scope\n\n // Read app set ID value, which uses version 4 of the\n // https://en.wikipedia.org/wiki/Universally_unique_identifier.\n val id: String = it.id\n})\n```\n\nJava \n\n```java\nContext context = getApplicationContext();\nAppSetIdClient client = AppSet.getClient(context);\nTask\u003cAppSetIdInfo\u003e task = client.getAppSetIdInfo();\n\ntask.addOnSuccessListener(new OnSuccessListener\u003cAppSetIdInfo\u003e() {\n @Override\n public void onSuccess(AppSetIdInfo info) {\n // Determine current scope of app set ID.\n int scope = info.getScope();\n\n // Read app set ID value, which uses version 4 of the\n // https://en.wikipedia.org/wiki/Universally_unique_identifier.\n String id = info.getId();\n }\n});\n```"]]