Skip to main content
Question

Can't get "receivedUpdatedCustomerInfo" to work (Objective c), please help?


Forum|alt.badge.img+3

Hi,  this is our first in app purchase (annual subscription) and the first time using RevenueCat, Overall everything seems to be working except for the following code which is never call  Please help.  Thank you.

 

- (void)purchases:(nonnull RCPurchases *)purchases receivedUpdatedCustomerInfo:(nonnull RCCustomerInfo *)purchaserInfo {

// handle any changes to purchaserInfo 

    NSLog(@"\n\n\n     Purchase Updated INFO: %@", purchaserInfo);

    [self CheckForSubscription];

}

12 replies

imougy
Forum|alt.badge.img+9
  • Active Helper
  • 94 replies
  • September 29, 2022

Did you set the PurchasesDelegate for the SDK?


Forum|alt.badge.img+3
  • Author
  • Member
  • 6 replies
  • September 29, 2022

not to sound dumb, but how do you do that?


imougy
Forum|alt.badge.img+9
  • Active Helper
  • 94 replies
  • September 29, 2022

Asking means you didn’t do that, hopefully this is the reason

    [RCPurchases sharedPurchases].delegate = your object

Please let us know


Forum|alt.badge.img+3
  • Author
  • Member
  • 6 replies
  • September 29, 2022

Thank you for your help.  I set the delegate    [RCPurchases sharedPurchases].delegate = self;   but still nothing. The above code in my post is still not being called.


imougy
Forum|alt.badge.img+9
  • Active Helper
  • 94 replies
  • September 29, 2022

Can you share more code so maybe we can see something?


Forum|alt.badge.img+3
  • Author
  • Member
  • 6 replies
  • September 29, 2022

hopefully this will help.  in my app delegate .h we have...

 

#import <UIKit/UIKit.h>

@import RevenueCat;

@interface AppDelegate : UIResponder <UIApplicationDelegate, RCPurchasesDelegate>{

    

}

@property (strong, nonatomic) UIWindow *window;

@end

 

We call the RevenueCat config in our AppDelegate.m

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

     

    RCPurchases.logLevel = RCLogLevelDebug;

    

     

       RCConfigurationBuilder *configuration = [RCConfiguration builderWithAPIKey:@"appkey"];

   configuration = [configuration withAppUserID:@""];//@"<app_user_id>"];

       [RCPurchases configureWithConfiguration:[configuration build]];

      

    [RCPurchases sharedPurchases].delegate = self;

    // Override point for customization after application launch.

    return YES;

}

 

This code is also in our AppDelegate.m but is never called.  I also tried putting the below code in our ViewController.m but it is never called either

 

- (void)purchases:(nonnull RCPurchases *)purchases receivedUpdatedPurchaserInfo:(nonnull RCCustomerInfo *)purchaserInfo {

    // handle any changes to purchaserInfo

    

    

    

    NSLog(@"\n\n\n\n                                                  Did receive subscription update!");

    

    NSLog(@"\n\n\n\n");

 

    

    NSLog(@"\n\n\n     WAHOOO      Purchase Updated INFO: %@", purchaserInfo);

   // [self checkSubcribeDate];

}

 

 

 

 


imougy
Forum|alt.badge.img+9
  • Active Helper
  • 94 replies
  • September 30, 2022

Ok, your code looks good.

I saw the following note in one of the SDK samples, it explains the usage of this delegate (look for /purchases-ios/Examples/MagicWeatherSwiftUI/Shared/Sources/Lifecycle/PurchasesDelegateHandler.swift)

/**

     Whenever the `shared` instance of Purchases updates the CustomerInfo cache, this method will be called.

    

     - Note: CustomerInfo is not pushed to each Purchases client, it has to be fetched.

     This delegate method is only called when the SDK updates its cache after an app launch, purchase, restore, or fetch.

     You still need to call `Purchases.shared.customerInfo` to fetch CustomerInfo regularly.

     */

Hope this explains why it is not called as you expect.


Forum|alt.badge.img+3
  • Author
  • Member
  • 6 replies
  • September 30, 2022

Ok, that makes some sense, I initially thought the RevenueCat server sent a notification to the device triggering the receivedUpdatedCustomerInfo into action.  Thank you for explaining this, you have been very helpful.

I do call the getCustomerInfo through out the lifecycle of our app in our ViewController.m  but the receivedUpdatedCustomerInfo never gets called.

 

[[RCPurchases sharedPurchases]  getCustomerInfoWithCompletion:^(RCCustomerInfo * customerInfo, NSError * error) {

             // access latest customerInfo

            NSLog(@"REVCAT Customer INFO: %@",customerInfo);

           NSLog(@"\n\n\n    isActive=%i   Revenue Cat - Expire Date=%@", customerInfo.entitlements[@”entitlement"].isActive , customerInfo.entitlements[@”entitlement"].expirationDate );

        

         BOOL isACTIVE = customerInfo.entitlements[@”entitlement"].isActive;

          if (isACTIVE) {

                    //give user access to subscription code here

          } else {

                  //not subscribed, limit app access code here

      }

}   

 

In spite of calling the getCustomerInfo. the receivedUpdatedCustomerInfo is never called.  Any ideas?

 

I also have one other question, since the receivedUpdatedCustomerInfo does not work how I initially thought.

I am testing our app on an a iPhone and iPad, both devices are using the same AppleID when testing the subscription purchase.  The question I have is when I subscribe on the phone, how can the subscription be detected on the iPad automatically without having to restore purchase on iPad? Is is possible, Or is restoring the purchase the only way?


imougy
Forum|alt.badge.img+9
  • Active Helper
  • 94 replies
  • September 30, 2022

Great!

to answer your question regarding purchasing on two different devices.  I used to store something on the iCloud so that users will automatically get the purchase info without any Restore Purchase button, it was great but it has issues, what if user asks for a refund, Apple doesn’t notify you with this info, so it is better to always check on the device for customer purchases.  Short answer is, always use the Restore Button to protect your assets. Share your thoughts otherwise. 


Forum|alt.badge.img+3
  • Author
  • Member
  • 6 replies
  • September 30, 2022

ok, thank you for your help!

I was just curious about my previous question.  I do call the getCustomerInfo though out our app, but the receivedUpdatedCustomerInfo is still never called?  Any ideas why?


imougy
Forum|alt.badge.img+9
  • Active Helper
  • 94 replies
  • September 30, 2022

Have you tried restore a purchase?  The note says this delegate will be called after restoring a purchase.  Try to restore a purchase on a clean device. 


Forum|alt.badge.img+3
  • Author
  • Member
  • 6 replies
  • October 3, 2022

I’ll try that.  Thank you for all of your help!


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings