זיהוי אפליקציות בבעלות המפתח

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

היקף מזהה קבוצת האפליקציות

מזהה קבוצת האפליקציות יכול להיות מוגדר לאחת מהרמות הבאות. כדי לקבוע לאיזה היקף מזהה מסוים משויך, צריך להפעיל את getScope().

היקף ההרשאות למפתחים ב-Google Play

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

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

היקף האפליקציה

אם מתקיים אחד מהתנאים הבאים, ה-SDK של מזהה קבוצת האפליקציות מחזיר מזהה ייחודי לאפליקציה ששלחה את הבקשה במכשיר נתון:

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

אל תסתמכו על ערך של מזהה קבוצת אפליקציות שנשמר במטמון

מזהה קבוצת האפליקציות של קבוצה נתונה של אפליקציות שהותקנו מחנות Google Play במכשיר יכול להתאפס בכל אחד מהמצבים הבאים:

  • לא הייתה גישה ל-API של מזהה קבוצת האפליקציות מקבוצות האפליקציות שמשתפות את אותו ערך מזהה במשך יותר מ-13 חודשים.
  • האפליקציה האחרונה מקבוצה מסוימת של אפליקציות הוסרה מהמכשיר.
  • המשתמש מבצע איפוס להגדרות המקוריות של המכשיר.

האפליקציה צריכה להשתמש ב-SDK כדי לאחזר את ערך המזהה בכל פעם שצריך אותו.

הוספת ה-SDK של מזהה קבוצת האפליקציות לאפליקציה

קטע הקוד הבא מציג דוגמה לקובץ build.gradle שמשתמש בספריית מזהה קבוצת האפליקציות:

dependencies {
    implementation 'com.google.android.gms:play-services-appset:16.1.0'
}

קטע הקוד לדוגמה הבא מדגים איך אפשר לאחזר את מזהה קבוצת האפליקציות באופן אסינכרוני באמצעות Tasks API ב-Google Play Services:

Kotlin

val client = AppSet.getClient(applicationContext) as AppSetIdClient
val task: Task<AppSetIdInfo> = client.appSetIdInfo as Task<AppSetIdInfo>

task.addOnSuccessListener({
    // Determine current scope of app set ID.
    val scope: Int = it.scope

    // Read app set ID value, which uses version 4 of the
    // universally unique identifier (UUID) format.
    val id: String = it.id
})

Java

Context context = getApplicationContext();
AppSetIdClient client = AppSet.getClient(context);
Task<AppSetIdInfo> task = client.getAppSetIdInfo();

task.addOnSuccessListener(new OnSuccessListener<AppSetIdInfo>() {
    @Override
    public void onSuccess(AppSetIdInfo info) {
        // Determine current scope of app set ID.
        int scope = info.getScope();

      // Read app set ID value, which uses version 4 of the
      // universally unique identifier (UUID) format.
        String id = info.getId();
    }
});

מידע נוסף על הפורמט של UUID זמין במאמר מזהה ייחודי אוניברסלי.