Verify Subscription Status
To verify the status of a subscription or an IAP you can use Glassfy permissions
instead of hardcoding a specific SKU or productId
in an application.
You should configure the permission by adding all the SKUs that unlock the specific feature of your application. Then using the following code to verify the status.
Glassfy.permissions { permissions, err in
guard let permissions = permissions else { return }
for p in permissions.all {
switch (p.permissionId) {
case "aPermission":
if (p.isValid) {
// unlock aFeature
}
break;
default:
print("Permission not handled");
break;
}
}
}
[Glassfy permissionsWithCompletion:^(GYPermissions *permission, NSError *err) {
NSArray<GYPermission*> *permissions = permission.all;
if (permissions) {
for (GYPermission *p in permissions) {
switch (p.permissionId) {
case @"premium":
if (p.isValid) {
// unlock aFeature
}
break;
default:
NSLog(@"Permission not handled");
break;
}
}
}
}];
Glassfy.permissions { permission, err ->
// update app status accordingly
permission?.all?.forEach {
when (it.permissionId) {
"premium" ->
if (it.isValid) {
// unlock aFeature
}
else -> println("Permission not handled");
}
}
}
Glassfy.permissions(new PermissionsCallback() {
@Override
public void onResult(@Nullable Permissions permission, @Nullable GlassfyError error) {
// update app status accondingly
if (permission != null) {
for (Permission p: permission.getAll()) {
switch (p.getPermissionId()) {
case "premium":
if (p.isValid()) {
// unlock aFeature
}
break;
default:
Log.d(TAG, "Permission not handled");
}
}
}
}
});
try {
var permission = await Glassfy.permissions();
permission.all?.forEach((p)=> {
if (p.permissionId == "premium" && p.isValid==true) {
// unlock aFeature
}
});
} catch (e) {
// initialization error
[...]
}
try {
const permissions = await Glassfy.permissions();
permissions.forEach((p)=>{
switch (p.permissionId) {
case "premium":
if (permission.isValid) {
// unlock
}
break;
default:
break;
}
});
} catch (e) {
// initialization error
[...]
}
try {
const permissions = await Glassfy.permissions();
permissions.forEach((p)=>{
switch (p.permissionId) {
case "premium":
if (permission.isValid) {
// unlock
}
break;
default:
break;
}
});
} catch (e) {
// initialization error
[...]
}
The Permissions object contains other useful information. For example, the accountableSkus
object that returns a list of SKUs responsible for unlocking that specific permission or installation specific identifiers such as subscriberId
and installationId
.
Offline permission
Glassfy does not cache the status of the permission in your device and require internet connection to check for the permission status.
If your app could be used without internet connection please implement a caching strategy for the permission status (eg: allow the use of the app up to 24 hours then require the internet connection)
Updated almost 2 years ago