Post

Replies

Boosts

Views

Activity

Apple Subscription Offer Codes do not work when upgrading from Monthly to Yearly Subscriptions
After setting up auto-renewing subscriptions, I’ve hit a snag implementing Offer Codes in my iOS app. The following has been configured: 2 subscriptions(yearly and monthly) setup in App Store Connect under same the subscription group Both subscriptions are at the same level of service and include a 60-day trial period Created 1-year free offer codes under the yearly renewable subscription The offer code is for new, existing, and expired users Observed user experience: The user logs in to the app and subscribes to a monthly renewable subscription The user then navigates to https://apps.apple.com/redeem?ctx=offercodes&id=##########&code=CODE to redeem 1-year free offer Code is accepted and Apple ID authorization is prompted After authorizing the subscription an error is presented stating, “ This offer can’t be redeemed with your current subscription.” Is there something I missed in my configuration or a restriction I’m unaware of? Does the user have to redeem the offer before subscribing?
3
0
1.2k
Aug ’22
Is there any way I can get exact offer code used by customer from receipt?
We have implemented apple receipt verification using PHP which is working perfectly fine. Now, I am trying to fetch the exact promo code from the receipt data if used by the customer in-app. I can see offer name from latest_receipt_info[0].offer_code_ref_name. I have implemented the transaction history detail after creating the required JWT GET https://api.storekit.itunes.apple.com/inApps/v1/history/{originalTransactionId} I received the following details after decoding signedTransaction. [transactionId] => 270001159964727 [originalTransactionId] => 270001159964727 [webOrderLineItemId] => 270000507948216 [bundleId] => xxxx [productId] => xxxxx [subscriptionGroupIdentifier] => 20970033 [purchaseDate] => 1659593358000 [originalPurchaseDate] => 1659593358000 [expiresDate] => 1660198158000 [quantity] => 1 [type] => Auto-Renewable Subscription [inAppOwnershipType] => PURCHASED [signedDate] => 1659599990477 [offerType] => 3 [offerIdentifier] => PK_DEV2 [environment] => Production Main Problem: I was assuming to get the exact offer code used by the customer in the offer identifier field. which I am not getting. Is there any way I can get the exact offer code used by the customer from the receipt?
1
0
582
Aug ’22
NEPacketTunnelProvider Why I am getting packets from this IP 17.130.21.5:443
For creating NEPacketTunnelNetworkSettings settings I am using the bellow code.In this code I am only adding "8.8.8.8", "1.1.1.1" in IPV4 includedRoutes and , "2001:4860:4860::8888" IPV6 includedRoutes. excludedRoutes are default.But I am getting some packets from 17.130.21.5:443 this IP.- (NEPacketTunnelNetworkSettings *)createTunnelSettings { NEPacketTunnelNetworkSettings *settings = [[NEPacketTunnelNetworkSettings alloc] initWithTunnelRemoteAddress:@"127.1.1.1"]; NEIPv4Settings *ipv4 = [[NEIPv4Settings alloc] initWithAddresses:@[@"172.16.209.2"] subnetMasks:@[@"255.255.255.252"]]; NEIPv6Settings *ipv6 = [[NEIPv6Settings alloc] initWithAddresses:@[@"fd12:1:1:1::2"] networkPrefixLengths:@[ @(64)]]; NEDNSSettings * dns = [[NEDNSSettings alloc] initWithServers: [@"8.8.8.8", @"1.1.1.1",@"2001:4860:4860::8888"]]; NSMutableArray* ipv4IncludedRoutes = [NSMutableArray new]; [ipv4IncludedRoutes addObject:[[NEIPv4Route alloc] initWithDestinationAddress:@"8.8.8.8" subnetMask:@"255.255.255.255"]]; [ipv4IncludedRoutes addObject:[[NEIPv4Route alloc] initWithDestinationAddress:@"1.1.1.1" subnetMask:@"255.255.255.255"]]; NSMutableArray* ipv6IncludedRoutes = [NSMutableArray new]; [ipv6IncludedRoutes addObject:[[NEIPv6Route alloc] initWithDestinationAddress:@"2001:4860:4860::8888" networkPrefixLength: @(128)]]; ipv4.includedRoutes = ipv4IncludedRoutes; ipv6.includedRoutes = ipv6IncludedRoutes; ipv4.excludedRoutes = @[[NEIPv4Route defaultRoute]]; ipv6.excludedRoutes = @[[NEIPv6Route defaultRoute]]; dns.matchDomains = @[ @"" ]; settings.DNSSettings = dns; if(ipv4Available) { settings.IPv4Settings = ipv4; } if(ipv6Available) { settings.IPv6Settings = ipv6; } } return settings; }
0
0
607
May ’20