Post

Replies

Boosts

Views

Activity

Why does my universal links not work??
I implemented a universal link according to this guidance. https://developer.apple.com/videos/play/wwdc2019/717 However, my universal links seem to never work. apple-app-site-association https://hajimenavi.web.app/.well-known/apple-app-site-association Xcode settings The link I am trying to open https://hajimenavi.web.app/familyId/ZBEJSJXyPNT7G team id I validated with apple's analyzation that the server has no problem (with Setting app>Developer>Universal Links analysis. What else should I check?? I am wasting a whole day with this. Please please help.
5
1
1.5k
Jun ’24
How Do I post APN??
I want to send APN to update a pass in the Wallet app. Followed this guideline. https://developer.apple.com/documentation/walletpasses/adding_a_web_service_to_update_passes#3733254 I tried with Typescript (Firebase Functions) like this. var path = "/3/device/"+pushToken var url = "https://api.push.apple.com:443"+path const response = await fetch(url, { method: 'POST', body: null, headers: { 'apns-topic': 'com.colorfull.walletPass', 'apns-push-type': 'background', 'connection': 'keep-alive' } }); Got this error. TypeError: fetch failed Tried with Flutter like this. var path = "/3/device/$pushToken"; var url = "https://api.push.apple.com:443$path"; Response resp = await post(Uri.parse(url), headers: { 'apns-topic': 'com.colorfull.walletPass', 'apns-push-type': 'background', 'connection': 'keep-alive' }, body: {}); Got this error. ClientException: Invalid request method, uri=https://api.push.apple.com/3/device/688a3d6bf83526f00f6fb3d8dd197578f665dea0eeba7aebbe68c61f06bad198 Obviously I'm doing it all wrong, but there is no clear guideline. How can I send APN??
0
1
699
Nov ’23
Unity.IL2CPP.Bee.BuildLogic.ToolchainNotFoundException: IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Mac, you must have Xcode installed.
I get this error after updating Xcode to 15. It was working fine just before updating. The app is created with Flutter containing flutter-unity-widget plugin. Full error ... continue ... Function: createItemModels(for:itemModelSource:) Thread: <_NSMainThread: 0x124e0a050>{number = 1, name = main} Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide. 2023-11-22 09:44:57.461 xcodebuild[64038:2655521] [MT] DVTAssertions: Warning in /System/Volumes/Data/SWE/Apps/DT/BuildRoots/BuildRoot11/ActiveBuildRoot/Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEF rameworks-22269/IDEFoundation/Provisioning/Capabilities Infrastructure/IDECapabilityQuerySelection.swift:103 Details: createItemModels creation requirements should not create capability item model for a capability item model that already exists. Function: createItemModels(for:itemModelSource:) Thread: <_NSMainThread: 0x124e0a050>{number = 1, name = main} Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide. ** BUILD FAILED ** Xcode's output: ↳ Writing result bundle at path: /var/folders/cv/yb103sl92sn87wng_mvscb_80000gn/T/flutter_tools.T5NLXl/flutter_ios_build_temp_dirjmiuWj/temporary_xcresult_bund le /Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Il2CppOutputProject/IL2CPP/build/deploy_arm64/il2cpp --compile-cpp --platform=iOS --architecture=arm64 --outputpath=libGameAssembly.a --libil2cpp-static --baselib-directory=/Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Libraries --additional-defines=IL2CPP_DEBUG=0 --incremental-g-c-time-slice=3 --configuration=Release --dotnetprofile=unityaot-macos --profiler-report --profiler-output-file=/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates .noindex/Unity-iPhone.build/Debug-iphoneos/artifacts/profile.json --print-command-line --external-lib-il2-cpp=/Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Libraries/libil2cpp.a --data-folder=/Users/tenna/Desktop/ai_chara/unity/AIChara-App/Library/Bee/artifacts/iOS/il2cppOutput/data --generatedcppdir=Il2CppOutputProject/Source/il2cppOutput --architecture=arm64 --outputpath=/Users/tenna/Desktop/ai_chara/build/ios/Debug-iphoneos/libGameAssembly.a --cachedirectory=/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noind ex/Unity-iPhone.build/Debug-iphoneos/artifacts/arm64 --configuration=Debug Starting: /Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Il2CppOutputProject/IL2CPP/build/deploy_arm64/bee_backend/mac-arm64/bee_backend --profile="/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noindex/Uni ty-iPhone.build/Debug-iphoneos/artifacts/arm64/buildstate/backend_profiler0.traceevents" --beedriver-listener --dagfile="/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noindex/Uni ty-iPhone.build/Debug-iphoneos/artifacts/arm64/buildstate/bee.dag" --continue-on-failure FinalProgram WorkingDir: /Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noindex/Unity-iPhone.b uild/Debug-iphoneos/artifacts/arm64/buildstate ExitCode: 4 Duration: 0s152ms ExitCode: 1 Duration: 0s2ms Build failed with 0 successful nodes and 0 failed ones Error: Internal build system error. BuildProgram exited with code 1. Unity.IL2CPP.Bee.BuildLogic.ToolchainNotFoundException: IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Mac, you must have Xcode installed. Building for Apple Silicon requires Xcode 9.4 and Mac 10.12 SDK. Xcode needs to be installed in the /Applications directory and have a name matching Xcode*.app. Or be selected using xcode-select. It's also possible to use /Library/Developer/CommandLineTools if those match the listed requirements. More information and installation instructions can be found here: https://developer.apple.com/support/xcode/ Specific Xcode versions can be downloaded here: https://developer.apple.com/download/more/ Unable to detect any compatible iPhoneOS SDK! at Unity.IL2CPP.Bee.BuildLogic.iOS.iOSBuildLogic.GetCompatibleXcodeInstallation(Architecture architecture, Version xcodeMinVersion, Version platformSdkMinVersion, Identifier platformSdkIdentifier, XcodePlatformSdk& compatiblePlatformSdk, XcodeInstallation& compatibleXcodeInstallation)... continue ... Error: Unity.IL2CPP.Building.BuilderFailedException: Build failed with 0 successful nodes and 0 failed ones Error: Internal build system error. BuildProgram exited with code 1. Unity.IL2CPP.Bee.BuildLogic.ToolchainNotFoundException: IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Mac, you must have Xcode installed. Building for Apple Silicon requires Xcode 9.4 and Mac 10.12 SDK. Xcode needs to be installed in the /Applications directory and have a name matching Xcode*.app. Or be selected using xcode-select. It's also possible to use /Library/Developer/CommandLineTools if those match the listed requirements. More information and installation instructions can be found here: https://developer.apple.com/support/xcode/ Specific Xcode versions can be downloaded here: https://developer.apple.com/download/more/ Unable to detect any compatible iPhoneOS SDK! at Unity.IL2CPP.Bee.BuildLogic.iOS.iOSBuildLogic.GetCompatibleXcodeInstallation(Architecture architecture, Version ... continue ... note: Removed stale file '/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Products/Debug-iphoneos/google_sign _in_ios/google_sign_in_ios.framework' ... continue ... warning: Run script build phase 'Run Script' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on ... continue ... I found this thread, but downgrading Xcode causes other issues, so rather not do that. https://forum.unity.com/threads/project-wont-build-using-xode15-release-candidate.1491761/ I tried to run the app from Xcode, also did not work.
3
1
3.2k
Nov ’23
EXC_BAD_ACCESS when tapped cancel on UIActivityViewController
Code: ` let url = URL(string: "instagram://app")! if !UIApplication.shared.canOpenURL(url) { showAlert(title: "Error", message: "インスタグラムがインストールされていません") return } var activityItem: [Any] = [] if let videUrl = videUrl { activityItem = [ImageActivityItem(videUrl)] } else { activityItem = [ImageActivityItem(image)] } let activityVC = UIActivityViewController(activityItems: activityItem, applicationActivities: nil) activityVC.popoverPresentationController?.sourceView = view self.present(activityVC, animated: true) activityVC.completionWithItemsHandler = { (activity, success, items, error) in print("Activity: \(activity) Success: \(success) Items: \(items) Error: \(error)") DispatchQueue.main.async { if success { print("onDone") self.deleteFile(url: url) } } }` Log: 2023-05-23 12:41:34.550747+0900 noFilterApp[21146:7539324] [default] LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.550819+0900 noFilterApp[21146:7539324] [default] Attempt to map database failed: permission was denied. This attempt will not be retried. 2023-05-23 12:41:34.550858+0900 noFilterApp[21146:7539324] [db] Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.551352+0900 noFilterApp[21146:7539324] [default] LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.551383+0900 noFilterApp[21146:7539324] [default] Attempt to map database failed: permission was denied. This attempt will not be retried. 2023-05-23 12:41:34.551417+0900 noFilterApp[21146:7539324] [db] Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.551615+0900 noFilterApp[21146:7539324] [default] -imageForImageDescriptor: can do IO please adopt -imageForDescriptor: for IO free drawing or -prepareImageForDescriptor: if IO is allowed. (This will become a fault soon.)
Topic: UI Frameworks SubTopic: UIKit Tags:
0
0
592
May ’23
Above code fails with error below:
static func create(videoTrack: AVAssetTrack, composition: AVMutableComposition, videoComposition: AVMutableVideoComposition) {                  let fillRect = CGRect(x: 0, y: 0, width: videoTrack.naturalSize.width, height: videoTrack.naturalSize.height)                  let parentlayer = CALayer()         parentlayer.frame = fillRect         parentlayer.zPosition = 100         let videolayer = CALayer()         videolayer.frame = fillRect         parentlayer.addSublayer(videolayer)         videolayer.isHidden = false         parentlayer.isHidden = false                  for textSection in [""] {             let imglayer = CALayer()             imglayer.contents = UIImage(systemName: "circle")!.cgImage// textSection.getImage().cgImage             imglayer.frame = fillRect             imglayer.opacity = 1             parentlayer.addSublayer(imglayer)         }                  videoComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videolayer, in: parentlayer)         // instruction for watermark         let instruction = AVMutableVideoCompositionInstruction()         instruction.timeRange = CMTimeRangeMake(start: .zero, duration: composition.duration)         let videotrack = composition.tracks(withMediaType: .video)[0] as AVAssetTrack         let layerinstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videotrack)         layerinstruction.setTransform(videoTrack.preferredTransform.concatenating(CGAffineTransform(scaleX: 1, y: 1)), at: .zero)         instruction.layerInstructions = [layerinstruction]                  videoComposition.instructions.append(instruction)     static func exportMovie(assets: [AVAsset], fileType: AVFileType, completion: (() -> Void)?) {                  let destinationURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("square.mov")                  let mixComposition = AVMutableComposition()                  // video composition に、先程の instruction を設定する。また、レンダリングの動画サイズを正方形に設定する         let croppedVideoComposition = AVMutableVideoComposition()         croppedVideoComposition.frameDuration = CMTimeMake(value: 1, timescale: 30)                           for avAsset in assets {             let videoTrack = avAsset.tracks(withMediaType: AVMediaType.video)[0]             let audioTrack = avAsset.tracks(withMediaType: AVMediaType.audio)[0]                          let compositionVideoTrack = mixComposition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)!             let compositionAudioTrack = mixComposition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)!                              try! compositionVideoTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: avAsset.duration), of: videoTrack, at: .zero)             try! compositionAudioTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: avAsset.duration), of: audioTrack, at: .zero)             compositionVideoTrack.preferredTransform = videoTrack.preferredTransform                          let size = CGSize(width: videoTrack.naturalSize.height, height: videoTrack.naturalSize.width)             let squareEdgeLength = size.height             let squareEdgeWidth = size.width                          let instruction = cropVideo(size: size, videoTrack: videoTrack, compositionVideoTrack: compositionVideoTrack, avAsset: avAsset)                          create(videoTrack: videoTrack, composition: mixComposition, videoComposition: croppedVideoComposition)                          croppedVideoComposition.instructions.append(instruction)             croppedVideoComposition.renderSize = CGSize(width: squareEdgeWidth, height: squareEdgeLength)         }                  // エクスポートの設定。先程の video compsition をエクスポートに使うよう設定する。         let assetExport = AVAssetExportSession.init(asset: mixComposition, presetName: AVAssetExportPresetMediumQuality)         assetExport?.outputFileType = fileType         assetExport?.outputURL = destinationURL         assetExport?.videoComposition = croppedVideoComposition                  if FileManager.default.fileExists(atPath: (assetExport?.outputURL?.path)!) {             try! FileManager.default.removeItem(atPath: (assetExport?.outputURL?.path)!)         }         assetExport?.exportAsynchronously(completionHandler: {             print("assetExport",assetExport?.error)             VideoComposeHelper.didCompone(url: destinationURL)         })     }          static func cropVideo(size: CGSize, videoTrack: AVAssetTrack, compositionVideoTrack: AVAssetTrack, avAsset: AVAsset) -> AVMutableVideoCompositionInstruction {         let croppingRect = CGRect(x: (videoTrack.naturalSize.width - size.height) / 2,                                   y: (videoTrack.naturalSize.height - size.width) / 2,                                   width: size.height, height: size.width)         let transform = videoTrack.preferredTransform.translatedBy(x: -croppingRect.minX, y: -croppingRect.minY)         // layer instruction を正方形に         let layerInstruction = AVMutableVideoCompositionLayerInstruction.init(assetTrack: compositionVideoTrack)         layerInstruction.setCropRectangle(croppingRect, at: .zero)         layerInstruction.setTransform(transform, at: .zero)         // instruction に、先程の layer instruction を設定する         let instruction = AVMutableVideoCompositionInstruction()         instruction.timeRange = CMTimeRangeMake(start: .zero, duration: avAsset.duration)         instruction.layerInstructions = [layerInstruction]         return instruction     }          static func didCompone(url: URL) {         PHPhotoLibrary.shared().performChanges({             PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: url)         }) { completed, error in             if let error = error {                 print("Failed to save video in photos", error)                 return             }             DispatchQueue.main.async {                 //self.view.isUserInteractionEnabled = true                 if completed {                     print("Video has been saved to your photos.")                 } else {                     print("Video saving has NOT been completed")                 }             }         }     }     } Above code fails with error below: assetExport Optional(Error Domain=AVFoundationErrorDomain Code=-11841 "操作が停止しました" UserInfo={NSLocalizedFailureReason=ビデオを作成できませんでした。, NSLocalizedDescription=操作が停止しました, NSUnderlyingError=0x2823c8000 {Error Domain=NSOSStatusErrorDomain Code=-17390 "(null)"}}) Failed to save video in photos Error Domain=PHPhotosErrorDomain Code=-1 "(null)" What could be wrong??
0
0
855
Mar ’23
AVMutableVideoComposition does not works
MyCode: class VideoComposeHelper {          static func create(assets: [AVAsset], textSections: [TextSectionView], duration: Double, onDone: @escaping (AVMutableComposition,AVMutableVideoComposition) -> Void) {                  let composition = AVMutableComposition()         let videoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID:Int32(kCMPersistentTrackID_Invalid))!         let audioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID:Int32(kCMPersistentTrackID_Invalid))!                  var duration = 0.0                  do {             for videoAsset in assets {                 print("videoAsset",duration)                 let cmTime = CMTimeMakeWithSeconds(duration, preferredTimescale: 1000)                 // video                 try videoTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration),                                                 of: videoAsset.tracks(withMediaType:.video)[0] as AVAssetTrack, at: cmTime)                 // audio                 try audioTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration),                                                 of: videoAsset.tracks(withMediaType:.audio)[0] as AVAssetTrack, at: cmTime)                 duration += videoAsset.duraSec()             }                      } catch {             print("darn")         }                  let size = videoTrack.naturalSize         let fillRect = CGRect(x: 0, y: 0, width: size.height, height: size.width)         print("naturalSize",size)         let parentlayer = CALayer()         parentlayer.frame = fillRect         parentlayer.zPosition = 100         let videolayer = CALayer()         videolayer.frame = fillRect         parentlayer.addSublayer(videolayer)         videolayer.isHidden = false         parentlayer.isHidden = false                  for textSection in textSections {             let imglayer = CALayer()             imglayer.contents = textSection.getImage().cgImage             imglayer.frame = fillRect             imglayer.opacity = 1             parentlayer.addSublayer(imglayer)         }         let layercomposition = AVMutableVideoComposition()         layercomposition.frameDuration = CMTimeMake(value: 4, timescale: 30)         layercomposition.renderSize = size         layercomposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videolayer, in: parentlayer)         // instruction for watermark         let instruction = AVMutableVideoCompositionInstruction()         instruction.timeRange = CMTimeRangeMake(start: .zero, duration: composition.duration)         let videotrack = composition.tracks(withMediaType: .video)[0] as AVAssetTrack         let layerinstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videotrack)         instruction.layerInstructions = [layerinstruction]         layercomposition.instructions = [instruction]         let FirstAssetScaleFactor = CGAffineTransform(scaleX: 1, y: 1)         layerinstruction.setTransform(videoTrack.preferredTransform.concatenating(FirstAssetScaleFactor), at: .zero)                  onDone(composition,layercomposition)     }     func exportVideo(duration: Double, composition: AVMutableComposition, videoComposition: AVMutableVideoComposition) {                  let outputURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!             .appendingPathComponent("result.mp4")         if FileManager.default.fileExists(atPath: outputURL.path) {             do {                 try FileManager.default.removeItem(at: outputURL)             } catch {                 print(error)             }         }         print("outputURL",outputURL)         let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetPassthrough)!         exporter.videoComposition = videoComposition         exporter.outputURL = outputURL         exporter.outputFileType = .mp4         exporter.shouldOptimizeForNetworkUse = true         let start = CMTimeMakeWithSeconds(0, preferredTimescale: 1000)         let range = CMTimeRangeMake(start: start, duration: CMTimeMakeWithSeconds(duration, preferredTimescale: 1000))         exporter.timeRange = range         exporter.exportAsynchronously {             switch exporter.status {             case .completed:                 //self.checkDuration(for: fileName, at: outputURL)                 PHPhotoLibrary.shared().performChanges({                     PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: outputURL)                 }) { completed, error in                     if let error = error {                         print("Failed to save video in photos", error)                         return                     }                     DispatchQueue.main.async {                         //self.view.isUserInteractionEnabled = true                         if completed {                             print("Video has been saved to your photos.")                         } else {                             print("Video saving has NOT been completed")                         }                     }                 }             case .failed:                 print("failed with:", exporter.error ?? "no error")             case .cancelled: break             default: break             }         }     } } When I run the code, it saves plain video with no texts which supposed to be handled by parentlayer.
0
0
918
Mar ’23
App crashes with com.apple.CoreMotion.MotionThread (29): shared-library-event (18)
When my app tries to start CMMotionManager, it crashes with 'ahpl_main (30): EXC_BAD_ACCESS (code=1, address=0x4230)' error. It's not always, but sometimes like when I tries to start CMMotionManager right after app is launched. motionManager = CMMotionManager() motionManager?.deviceMotionUpdateInterval = 1.0 guard motionManager.isDeviceMotionAvailable else { return } motionManager?.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: { [weak self] (motion, error) in }) This might be a memory issue..? If I need to provide more information, I am happy to do so. Thank you for your help.
3
0
2.1k
Feb ’23
The paid digital content and services in your app do not provide long-lasting value and utility to App Store users.
Our app was rejected with above reason. In fact, the quality of the app was really poor before, it received 2 negative reviews. However, we included huge improvements on this update that would resolve all the negative reviews. App Store Reviewer said: -- We've identified a pattern of behavior associated with your Apple Developer Program account that is not consistent with the Developer Code of Conduct. Your action is required to address these serious issues: Your app has received numerous negative reviews from App Store users. These reviews describe a poor user experience, including poor feature and functionality. The paid digital content and services in your app do not provide long-lasting value and utility to App Store users. Per guideline 5.6.4, apps on the App Store must provide the high quality experience our users expect. To maintain your app's availability on the App Store, please provide a written statement detailing the improvements you plan to make. Your statement should include the following information: A thorough explanation of the issues we identified Specific, verifiable steps you will take to resolve this issue and prevent its recurrence -- So, I provided several features to make the paid content valuable and improvement plans based on the negative reviews. However, It seem it was not enough, and our app was removed from App Store. What can I do? I feel like there is no use givng more improvement plans because the AppStore reviewers is just trying to remove the app and no intension of taking it back no matter what.
1
0
1.2k
Aug ’22
No reply from Apple in the Resolution Center after my app is rejected.
I don't know this is the correct place to ask this, but Apple has not replied to my message in the Resolution Center. My app was rejected because of the "Guideline 5.2.2 - Legal", and they said I have to provide documentary evidence demonstrating that I have all necessary rights or permissions to facilitate transactions and charge for access to third-party services in your app. My app access YouTube, and let users live stream. Similar app like "Swither". I asked exactly what information do I need to provide, but they haven't replied for over 3 days. When I re-submit the app, they just reject and send me the same "Guideline 5.2.2 - Legal" rejection message. Do I need to ask google to make documentation?? Or anyone experienced this, how could you solved this? Thank you in advance.
2
0
970
Dec ’21
Why does my universal links not work??
I implemented a universal link according to this guidance. https://developer.apple.com/videos/play/wwdc2019/717 However, my universal links seem to never work. apple-app-site-association https://hajimenavi.web.app/.well-known/apple-app-site-association Xcode settings The link I am trying to open https://hajimenavi.web.app/familyId/ZBEJSJXyPNT7G team id I validated with apple's analyzation that the server has no problem (with Setting app>Developer>Universal Links analysis. What else should I check?? I am wasting a whole day with this. Please please help.
Replies
5
Boosts
1
Views
1.5k
Activity
Jun ’24
How Do I post APN??
I want to send APN to update a pass in the Wallet app. Followed this guideline. https://developer.apple.com/documentation/walletpasses/adding_a_web_service_to_update_passes#3733254 I tried with Typescript (Firebase Functions) like this. var path = "/3/device/"+pushToken var url = "https://api.push.apple.com:443"+path const response = await fetch(url, { method: 'POST', body: null, headers: { 'apns-topic': 'com.colorfull.walletPass', 'apns-push-type': 'background', 'connection': 'keep-alive' } }); Got this error. TypeError: fetch failed Tried with Flutter like this. var path = "/3/device/$pushToken"; var url = "https://api.push.apple.com:443$path"; Response resp = await post(Uri.parse(url), headers: { 'apns-topic': 'com.colorfull.walletPass', 'apns-push-type': 'background', 'connection': 'keep-alive' }, body: {}); Got this error. ClientException: Invalid request method, uri=https://api.push.apple.com/3/device/688a3d6bf83526f00f6fb3d8dd197578f665dea0eeba7aebbe68c61f06bad198 Obviously I'm doing it all wrong, but there is no clear guideline. How can I send APN??
Replies
0
Boosts
1
Views
699
Activity
Nov ’23
Unity.IL2CPP.Bee.BuildLogic.ToolchainNotFoundException: IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Mac, you must have Xcode installed.
I get this error after updating Xcode to 15. It was working fine just before updating. The app is created with Flutter containing flutter-unity-widget plugin. Full error ... continue ... Function: createItemModels(for:itemModelSource:) Thread: <_NSMainThread: 0x124e0a050>{number = 1, name = main} Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide. 2023-11-22 09:44:57.461 xcodebuild[64038:2655521] [MT] DVTAssertions: Warning in /System/Volumes/Data/SWE/Apps/DT/BuildRoots/BuildRoot11/ActiveBuildRoot/Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEF rameworks-22269/IDEFoundation/Provisioning/Capabilities Infrastructure/IDECapabilityQuerySelection.swift:103 Details: createItemModels creation requirements should not create capability item model for a capability item model that already exists. Function: createItemModels(for:itemModelSource:) Thread: <_NSMainThread: 0x124e0a050>{number = 1, name = main} Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide. ** BUILD FAILED ** Xcode's output: ↳ Writing result bundle at path: /var/folders/cv/yb103sl92sn87wng_mvscb_80000gn/T/flutter_tools.T5NLXl/flutter_ios_build_temp_dirjmiuWj/temporary_xcresult_bund le /Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Il2CppOutputProject/IL2CPP/build/deploy_arm64/il2cpp --compile-cpp --platform=iOS --architecture=arm64 --outputpath=libGameAssembly.a --libil2cpp-static --baselib-directory=/Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Libraries --additional-defines=IL2CPP_DEBUG=0 --incremental-g-c-time-slice=3 --configuration=Release --dotnetprofile=unityaot-macos --profiler-report --profiler-output-file=/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates .noindex/Unity-iPhone.build/Debug-iphoneos/artifacts/profile.json --print-command-line --external-lib-il2-cpp=/Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Libraries/libil2cpp.a --data-folder=/Users/tenna/Desktop/ai_chara/unity/AIChara-App/Library/Bee/artifacts/iOS/il2cppOutput/data --generatedcppdir=Il2CppOutputProject/Source/il2cppOutput --architecture=arm64 --outputpath=/Users/tenna/Desktop/ai_chara/build/ios/Debug-iphoneos/libGameAssembly.a --cachedirectory=/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noind ex/Unity-iPhone.build/Debug-iphoneos/artifacts/arm64 --configuration=Debug Starting: /Users/tenna/Desktop/ai_chara/ios/UnityLibrary/Il2CppOutputProject/IL2CPP/build/deploy_arm64/bee_backend/mac-arm64/bee_backend --profile="/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noindex/Uni ty-iPhone.build/Debug-iphoneos/artifacts/arm64/buildstate/backend_profiler0.traceevents" --beedriver-listener --dagfile="/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noindex/Uni ty-iPhone.build/Debug-iphoneos/artifacts/arm64/buildstate/bee.dag" --continue-on-failure FinalProgram WorkingDir: /Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Intermediates.noindex/Unity-iPhone.b uild/Debug-iphoneos/artifacts/arm64/buildstate ExitCode: 4 Duration: 0s152ms ExitCode: 1 Duration: 0s2ms Build failed with 0 successful nodes and 0 failed ones Error: Internal build system error. BuildProgram exited with code 1. Unity.IL2CPP.Bee.BuildLogic.ToolchainNotFoundException: IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Mac, you must have Xcode installed. Building for Apple Silicon requires Xcode 9.4 and Mac 10.12 SDK. Xcode needs to be installed in the /Applications directory and have a name matching Xcode*.app. Or be selected using xcode-select. It's also possible to use /Library/Developer/CommandLineTools if those match the listed requirements. More information and installation instructions can be found here: https://developer.apple.com/support/xcode/ Specific Xcode versions can be downloaded here: https://developer.apple.com/download/more/ Unable to detect any compatible iPhoneOS SDK! at Unity.IL2CPP.Bee.BuildLogic.iOS.iOSBuildLogic.GetCompatibleXcodeInstallation(Architecture architecture, Version xcodeMinVersion, Version platformSdkMinVersion, Identifier platformSdkIdentifier, XcodePlatformSdk& compatiblePlatformSdk, XcodeInstallation& compatibleXcodeInstallation)... continue ... Error: Unity.IL2CPP.Building.BuilderFailedException: Build failed with 0 successful nodes and 0 failed ones Error: Internal build system error. BuildProgram exited with code 1. Unity.IL2CPP.Bee.BuildLogic.ToolchainNotFoundException: IL2CPP C++ code builder is unable to build C++ code. In order to build C++ code for Mac, you must have Xcode installed. Building for Apple Silicon requires Xcode 9.4 and Mac 10.12 SDK. Xcode needs to be installed in the /Applications directory and have a name matching Xcode*.app. Or be selected using xcode-select. It's also possible to use /Library/Developer/CommandLineTools if those match the listed requirements. More information and installation instructions can be found here: https://developer.apple.com/support/xcode/ Specific Xcode versions can be downloaded here: https://developer.apple.com/download/more/ Unable to detect any compatible iPhoneOS SDK! at Unity.IL2CPP.Bee.BuildLogic.iOS.iOSBuildLogic.GetCompatibleXcodeInstallation(Architecture architecture, Version ... continue ... note: Removed stale file '/Users/tenna/Library/Developer/Xcode/DerivedData/Runner-bcftqgeocxzxveemrkiekqlvuozs/Build/Products/Debug-iphoneos/google_sign _in_ios/google_sign_in_ios.framework' ... continue ... warning: Run script build phase 'Run Script' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on ... continue ... I found this thread, but downgrading Xcode causes other issues, so rather not do that. https://forum.unity.com/threads/project-wont-build-using-xode15-release-candidate.1491761/ I tried to run the app from Xcode, also did not work.
Replies
3
Boosts
1
Views
3.2k
Activity
Nov ’23
EXC_BAD_ACCESS when tapped cancel on UIActivityViewController
Code: ` let url = URL(string: "instagram://app")! if !UIApplication.shared.canOpenURL(url) { showAlert(title: "Error", message: "インスタグラムがインストールされていません") return } var activityItem: [Any] = [] if let videUrl = videUrl { activityItem = [ImageActivityItem(videUrl)] } else { activityItem = [ImageActivityItem(image)] } let activityVC = UIActivityViewController(activityItems: activityItem, applicationActivities: nil) activityVC.popoverPresentationController?.sourceView = view self.present(activityVC, animated: true) activityVC.completionWithItemsHandler = { (activity, success, items, error) in print("Activity: \(activity) Success: \(success) Items: \(items) Error: \(error)") DispatchQueue.main.async { if success { print("onDone") self.deleteFile(url: url) } } }` Log: 2023-05-23 12:41:34.550747+0900 noFilterApp[21146:7539324] [default] LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.550819+0900 noFilterApp[21146:7539324] [default] Attempt to map database failed: permission was denied. This attempt will not be retried. 2023-05-23 12:41:34.550858+0900 noFilterApp[21146:7539324] [db] Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.551352+0900 noFilterApp[21146:7539324] [default] LaunchServices: store (null) or url (null) was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.551383+0900 noFilterApp[21146:7539324] [default] Attempt to map database failed: permission was denied. This attempt will not be retried. 2023-05-23 12:41:34.551417+0900 noFilterApp[21146:7539324] [db] Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=66, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler} 2023-05-23 12:41:34.551615+0900 noFilterApp[21146:7539324] [default] -imageForImageDescriptor: can do IO please adopt -imageForDescriptor: for IO free drawing or -prepareImageForDescriptor: if IO is allowed. (This will become a fault soon.)
Topic: UI Frameworks SubTopic: UIKit Tags:
Replies
0
Boosts
0
Views
592
Activity
May ’23
Above code fails with error below:
static func create(videoTrack: AVAssetTrack, composition: AVMutableComposition, videoComposition: AVMutableVideoComposition) {                  let fillRect = CGRect(x: 0, y: 0, width: videoTrack.naturalSize.width, height: videoTrack.naturalSize.height)                  let parentlayer = CALayer()         parentlayer.frame = fillRect         parentlayer.zPosition = 100         let videolayer = CALayer()         videolayer.frame = fillRect         parentlayer.addSublayer(videolayer)         videolayer.isHidden = false         parentlayer.isHidden = false                  for textSection in [""] {             let imglayer = CALayer()             imglayer.contents = UIImage(systemName: "circle")!.cgImage// textSection.getImage().cgImage             imglayer.frame = fillRect             imglayer.opacity = 1             parentlayer.addSublayer(imglayer)         }                  videoComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videolayer, in: parentlayer)         // instruction for watermark         let instruction = AVMutableVideoCompositionInstruction()         instruction.timeRange = CMTimeRangeMake(start: .zero, duration: composition.duration)         let videotrack = composition.tracks(withMediaType: .video)[0] as AVAssetTrack         let layerinstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videotrack)         layerinstruction.setTransform(videoTrack.preferredTransform.concatenating(CGAffineTransform(scaleX: 1, y: 1)), at: .zero)         instruction.layerInstructions = [layerinstruction]                  videoComposition.instructions.append(instruction)     static func exportMovie(assets: [AVAsset], fileType: AVFileType, completion: (() -> Void)?) {                  let destinationURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("square.mov")                  let mixComposition = AVMutableComposition()                  // video composition に、先程の instruction を設定する。また、レンダリングの動画サイズを正方形に設定する         let croppedVideoComposition = AVMutableVideoComposition()         croppedVideoComposition.frameDuration = CMTimeMake(value: 1, timescale: 30)                           for avAsset in assets {             let videoTrack = avAsset.tracks(withMediaType: AVMediaType.video)[0]             let audioTrack = avAsset.tracks(withMediaType: AVMediaType.audio)[0]                          let compositionVideoTrack = mixComposition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)!             let compositionAudioTrack = mixComposition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)!                              try! compositionVideoTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: avAsset.duration), of: videoTrack, at: .zero)             try! compositionAudioTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: avAsset.duration), of: audioTrack, at: .zero)             compositionVideoTrack.preferredTransform = videoTrack.preferredTransform                          let size = CGSize(width: videoTrack.naturalSize.height, height: videoTrack.naturalSize.width)             let squareEdgeLength = size.height             let squareEdgeWidth = size.width                          let instruction = cropVideo(size: size, videoTrack: videoTrack, compositionVideoTrack: compositionVideoTrack, avAsset: avAsset)                          create(videoTrack: videoTrack, composition: mixComposition, videoComposition: croppedVideoComposition)                          croppedVideoComposition.instructions.append(instruction)             croppedVideoComposition.renderSize = CGSize(width: squareEdgeWidth, height: squareEdgeLength)         }                  // エクスポートの設定。先程の video compsition をエクスポートに使うよう設定する。         let assetExport = AVAssetExportSession.init(asset: mixComposition, presetName: AVAssetExportPresetMediumQuality)         assetExport?.outputFileType = fileType         assetExport?.outputURL = destinationURL         assetExport?.videoComposition = croppedVideoComposition                  if FileManager.default.fileExists(atPath: (assetExport?.outputURL?.path)!) {             try! FileManager.default.removeItem(atPath: (assetExport?.outputURL?.path)!)         }         assetExport?.exportAsynchronously(completionHandler: {             print("assetExport",assetExport?.error)             VideoComposeHelper.didCompone(url: destinationURL)         })     }          static func cropVideo(size: CGSize, videoTrack: AVAssetTrack, compositionVideoTrack: AVAssetTrack, avAsset: AVAsset) -> AVMutableVideoCompositionInstruction {         let croppingRect = CGRect(x: (videoTrack.naturalSize.width - size.height) / 2,                                   y: (videoTrack.naturalSize.height - size.width) / 2,                                   width: size.height, height: size.width)         let transform = videoTrack.preferredTransform.translatedBy(x: -croppingRect.minX, y: -croppingRect.minY)         // layer instruction を正方形に         let layerInstruction = AVMutableVideoCompositionLayerInstruction.init(assetTrack: compositionVideoTrack)         layerInstruction.setCropRectangle(croppingRect, at: .zero)         layerInstruction.setTransform(transform, at: .zero)         // instruction に、先程の layer instruction を設定する         let instruction = AVMutableVideoCompositionInstruction()         instruction.timeRange = CMTimeRangeMake(start: .zero, duration: avAsset.duration)         instruction.layerInstructions = [layerInstruction]         return instruction     }          static func didCompone(url: URL) {         PHPhotoLibrary.shared().performChanges({             PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: url)         }) { completed, error in             if let error = error {                 print("Failed to save video in photos", error)                 return             }             DispatchQueue.main.async {                 //self.view.isUserInteractionEnabled = true                 if completed {                     print("Video has been saved to your photos.")                 } else {                     print("Video saving has NOT been completed")                 }             }         }     }     } Above code fails with error below: assetExport Optional(Error Domain=AVFoundationErrorDomain Code=-11841 "操作が停止しました" UserInfo={NSLocalizedFailureReason=ビデオを作成できませんでした。, NSLocalizedDescription=操作が停止しました, NSUnderlyingError=0x2823c8000 {Error Domain=NSOSStatusErrorDomain Code=-17390 "(null)"}}) Failed to save video in photos Error Domain=PHPhotosErrorDomain Code=-1 "(null)" What could be wrong??
Replies
0
Boosts
0
Views
855
Activity
Mar ’23
AVMutableVideoComposition does not works
MyCode: class VideoComposeHelper {          static func create(assets: [AVAsset], textSections: [TextSectionView], duration: Double, onDone: @escaping (AVMutableComposition,AVMutableVideoComposition) -> Void) {                  let composition = AVMutableComposition()         let videoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID:Int32(kCMPersistentTrackID_Invalid))!         let audioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID:Int32(kCMPersistentTrackID_Invalid))!                  var duration = 0.0                  do {             for videoAsset in assets {                 print("videoAsset",duration)                 let cmTime = CMTimeMakeWithSeconds(duration, preferredTimescale: 1000)                 // video                 try videoTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration),                                                 of: videoAsset.tracks(withMediaType:.video)[0] as AVAssetTrack, at: cmTime)                 // audio                 try audioTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration),                                                 of: videoAsset.tracks(withMediaType:.audio)[0] as AVAssetTrack, at: cmTime)                 duration += videoAsset.duraSec()             }                      } catch {             print("darn")         }                  let size = videoTrack.naturalSize         let fillRect = CGRect(x: 0, y: 0, width: size.height, height: size.width)         print("naturalSize",size)         let parentlayer = CALayer()         parentlayer.frame = fillRect         parentlayer.zPosition = 100         let videolayer = CALayer()         videolayer.frame = fillRect         parentlayer.addSublayer(videolayer)         videolayer.isHidden = false         parentlayer.isHidden = false                  for textSection in textSections {             let imglayer = CALayer()             imglayer.contents = textSection.getImage().cgImage             imglayer.frame = fillRect             imglayer.opacity = 1             parentlayer.addSublayer(imglayer)         }         let layercomposition = AVMutableVideoComposition()         layercomposition.frameDuration = CMTimeMake(value: 4, timescale: 30)         layercomposition.renderSize = size         layercomposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videolayer, in: parentlayer)         // instruction for watermark         let instruction = AVMutableVideoCompositionInstruction()         instruction.timeRange = CMTimeRangeMake(start: .zero, duration: composition.duration)         let videotrack = composition.tracks(withMediaType: .video)[0] as AVAssetTrack         let layerinstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videotrack)         instruction.layerInstructions = [layerinstruction]         layercomposition.instructions = [instruction]         let FirstAssetScaleFactor = CGAffineTransform(scaleX: 1, y: 1)         layerinstruction.setTransform(videoTrack.preferredTransform.concatenating(FirstAssetScaleFactor), at: .zero)                  onDone(composition,layercomposition)     }     func exportVideo(duration: Double, composition: AVMutableComposition, videoComposition: AVMutableVideoComposition) {                  let outputURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!             .appendingPathComponent("result.mp4")         if FileManager.default.fileExists(atPath: outputURL.path) {             do {                 try FileManager.default.removeItem(at: outputURL)             } catch {                 print(error)             }         }         print("outputURL",outputURL)         let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetPassthrough)!         exporter.videoComposition = videoComposition         exporter.outputURL = outputURL         exporter.outputFileType = .mp4         exporter.shouldOptimizeForNetworkUse = true         let start = CMTimeMakeWithSeconds(0, preferredTimescale: 1000)         let range = CMTimeRangeMake(start: start, duration: CMTimeMakeWithSeconds(duration, preferredTimescale: 1000))         exporter.timeRange = range         exporter.exportAsynchronously {             switch exporter.status {             case .completed:                 //self.checkDuration(for: fileName, at: outputURL)                 PHPhotoLibrary.shared().performChanges({                     PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: outputURL)                 }) { completed, error in                     if let error = error {                         print("Failed to save video in photos", error)                         return                     }                     DispatchQueue.main.async {                         //self.view.isUserInteractionEnabled = true                         if completed {                             print("Video has been saved to your photos.")                         } else {                             print("Video saving has NOT been completed")                         }                     }                 }             case .failed:                 print("failed with:", exporter.error ?? "no error")             case .cancelled: break             default: break             }         }     } } When I run the code, it saves plain video with no texts which supposed to be handled by parentlayer.
Replies
0
Boosts
0
Views
918
Activity
Mar ’23
App crashes with com.apple.CoreMotion.MotionThread (29): shared-library-event (18)
When my app tries to start CMMotionManager, it crashes with 'ahpl_main (30): EXC_BAD_ACCESS (code=1, address=0x4230)' error. It's not always, but sometimes like when I tries to start CMMotionManager right after app is launched. motionManager = CMMotionManager() motionManager?.deviceMotionUpdateInterval = 1.0 guard motionManager.isDeviceMotionAvailable else { return } motionManager?.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: { [weak self] (motion, error) in }) This might be a memory issue..? If I need to provide more information, I am happy to do so. Thank you for your help.
Replies
3
Boosts
0
Views
2.1k
Activity
Feb ’23
The paid digital content and services in your app do not provide long-lasting value and utility to App Store users.
Our app was rejected with above reason. In fact, the quality of the app was really poor before, it received 2 negative reviews. However, we included huge improvements on this update that would resolve all the negative reviews. App Store Reviewer said: -- We've identified a pattern of behavior associated with your Apple Developer Program account that is not consistent with the Developer Code of Conduct. Your action is required to address these serious issues: Your app has received numerous negative reviews from App Store users. These reviews describe a poor user experience, including poor feature and functionality. The paid digital content and services in your app do not provide long-lasting value and utility to App Store users. Per guideline 5.6.4, apps on the App Store must provide the high quality experience our users expect. To maintain your app's availability on the App Store, please provide a written statement detailing the improvements you plan to make. Your statement should include the following information: A thorough explanation of the issues we identified Specific, verifiable steps you will take to resolve this issue and prevent its recurrence -- So, I provided several features to make the paid content valuable and improvement plans based on the negative reviews. However, It seem it was not enough, and our app was removed from App Store. What can I do? I feel like there is no use givng more improvement plans because the AppStore reviewers is just trying to remove the app and no intension of taking it back no matter what.
Replies
1
Boosts
0
Views
1.2k
Activity
Aug ’22
No reply from Apple in the Resolution Center after my app is rejected.
I don't know this is the correct place to ask this, but Apple has not replied to my message in the Resolution Center. My app was rejected because of the "Guideline 5.2.2 - Legal", and they said I have to provide documentary evidence demonstrating that I have all necessary rights or permissions to facilitate transactions and charge for access to third-party services in your app. My app access YouTube, and let users live stream. Similar app like "Swither". I asked exactly what information do I need to provide, but they haven't replied for over 3 days. When I re-submit the app, they just reject and send me the same "Guideline 5.2.2 - Legal" rejection message. Do I need to ask google to make documentation?? Or anyone experienced this, how could you solved this? Thank you in advance.
Replies
2
Boosts
0
Views
970
Activity
Dec ’21