Post

Replies

Boosts

Views

Activity

Reply to In App Subscriptions Testing
I've found this post from Revenue Cat to be a gold mine for tips on testing subscriptions.https://www.revenuecat.com/blog/the-ultimate-guide-to-subscription-testing-on-iosA couple caveats:I haven't had a chance yet to try the techniques that they mention.It's true that Revenue Cat sells an iOS subscription management service. To be clear, I'm not affiliated with them. The post itself is technical advice that fills in a lot of missing pieces about how sandboxing, TestFlight, and production interact with subscriptions. (They refer to their own sevice in the very last paragraph.)They suggest using a promo code as a way to download and test an approved production version of an app against subscriptions before that production app is manually released to customers on the App Store.Quote:Submit a beta version of the app to App Review. Make sure to set “Version Release” to “Manually release this version” so that the app is not released on the App Store.Generate promo codes for the app. This can be done for free apps that are approved but not yet live on the App Store.Download the app from the App Store using a promo code.Subscribe."Since this app has gone through approval, subscriptions will perform exactly as they will when the app is live on the App Store—including charging testers who subscribe and allowing testers to manage their subscription on the App Store app. You can give testers promo codes to let them test the app for free. Subscriptions paid for via promo code work exactly like paid subscriptions except that they don’t auto-renew.One other thing to note here is that apps downloaded via promo codes before the app is live on the App Store don’t seem to have a proper receipt file in the download bundle. The receipt should be refreshed with a purchase, but this issue could be used to test the rare scenario where real users of the app somehow end up in a state where an accurate receipt is not contained in the app bundle."
Apr ’20
Reply to Crash When Exporting Video with Text Overlay
I'm seeing the same crash in our video exporter under similar conditions. It only seems to happen when we use a AVVideoCompositionCoreAnimationTool in our export. Some unusual details: Currently, we only see this crash in the simulator. We're not yet seeing it on devices. So far we've duplicated the crash with the iOS 13.5 simulator and iOS 13.6 simulator. The crash doesn't seem to happen in the iOS 13.0 simulator. We haven't yet tested other simulator SDK's. Thread 71 Queue : com.apple.coremedia.basicvideocompositor.output (serial) #0 0x00007fff522fe133 in _xpc_api_misuse () #1 0x00007fff522f855d in _xpc_shmem_create_with_prot () #2 0x00007fff260d03ec in _ioSurfaceClientCreate () #3 0x00007fff260cc3ac in -[IOSurface initWithProperties:] () #4 0x00007fff2b3b3e6f in CA::Render::Image::retain_iosurface() const () #5 0x00007fff2b401984 in CA::OGL::GLESContext::retain_image(CA::OGL::Image*, CA::Render::Texture*, bool) () #6 0x00007fff2b3ff780 in CA::OGL::GLESContext::bind_image_impl(unsigned int, CA::Render::Texture*, unsigned int, CA::OGL::TextureFilter, CA::OGL::TextureFilter, float, CA::OGL::TextureEdgeMode, float*, char const*) () #7 0x00007fff2b4059e6 in CA::OGL::Context::bind_image(unsigned int, CA::Render::Texture*, unsigned int, CA::OGL::TextureFilter, CA::OGL::TextureFilter, float, CA::OGL::TextureEdgeMode, CA::OGL::ContentsGeometry const*, float*, char const*) () #8 0x00007fff2b3eaff0 in CA::OGL::render_contents_background(CA::OGL::Renderer&, CA::OGL::Layer const*) () #9 0x00007fff2b4c187b in CA::OGL::LayerNode::apply(float, CA::OGL::Surface**, float*) () #10 0x00007fff2b4bf5d7 in CA::OGL::ImagingNode::render(CA::OGL::ImagingNode::RenderClosure*, unsigned int) () #11 0x00007fff2b3f01b9 in CA::OGL::render_layers(CA::OGL::Renderer&, CA::OGL::Layer*) () #12 0x00007fff2b4c191f in CA::OGL::LayerNode::apply(float, CA::OGL::Surface**, float*) () #13 0x00007fff2b4bf5d7 in CA::OGL::ImagingNode::render(CA::OGL::ImagingNode::RenderClosure*, unsigned int) () #14 0x00007fff2b3f01b9 in CA::OGL::render_layers(CA::OGL::Renderer&, CA::OGL::Layer*) () #15 0x00007fff2b4c191f in CA::OGL::LayerNode::apply(float, CA::OGL::Surface**, float*) () #16 0x00007fff2b4bf5d7 in CA::OGL::ImagingNode::render(CA::OGL::ImagingNode::RenderClosure*, unsigned int) () #17 0x00007fff2b3f01b9 in CA::OGL::render_layers(CA::OGL::Renderer&, CA::OGL::Layer*) () #18 0x00007fff2b3f0999 in CA::OGL::render_root_layers(CA::OGL::Renderer&, x_link_struct const*, CA::OGL::Gstate const&) () #19 0x00007fff2b3c4866 in CA::OGL::Renderer::render(CA::Render::Update const*, unsigned long) () #20 0x00007fff2b3c7383 in CA::OGL::render(CA::OGL::Renderer&, CA::Render::Update*, unsigned long) () #21 0x00007fff2b58e2c9 in -[CARenderer render] () #22 0x00007fff280e2b9d in FigCoreAnimationRendererCopyPixelBufferAtTime () #23 0x00007fff27ff1d5e in FigVCPCoreAnimationPostProcessorCopyPixelBufferAtTime () #24 0x00007fff2807f3ee in videoprocessor_frameCompleteCallback () #25 0x00007fff27ff3bda in fvcp_compositorHost_FrameCompletion () #26 0x00007fff28087b4a in __basicVideoCompositor_RenderFrame_block_invoke_2 () #27 0x00000001079c0f11 in _dispatch_call_block_and_release () #28 0x00000001079c1e8e in _dispatch_client_callout () #29 0x00000001079c86fd in _dispatch_lane_serial_drain () #30 0x00000001079c92c5 in _dispatch_lane_invoke () #31 0x00000001079d3399 in _dispatch_root_queue_drain () #32 0x00000001079d3168 in _dispatch_worker_thread () #33 0x00007fff522b7109 in _pthread_start () #34 0x00007fff522b2b8b in thread_start () Enqueued from com.apple.root.default-qos.overcommit (Thread 54) Queue : com.apple.root.default-qos.overcommit (serial) #0 0x00000001079c5d46 in dispatch_async () #1 0x00007fff28085f85 in basicVideoCompositor_RenderFrame () #2 0x00007fff27ff3a13 in FigVCPCompositorHostComposeFrameAsync () #3 0x00007fff2807f08c in videoprocessor_processUntilHighWaterMet () #4 0x00007fff27f7ecbe in activitySchedulerOnThread () #5 0x00007fff24debe7a in figThreadMain () #6 0x00007fff522b7109 in _pthread_start () #7 0x00007fff522b2b8b in thread_start ()
Jul ’20