Post not yet marked as solved
Hi, we recently noticed an issue when exporting the localization files from one of our projects. So in the exported .xliff file, there is a string that has been varied into the plural forms of zero, one and other. We had translated them into Japanese. But in the .xliff file, the source element of this string in plural ONE is missing, while the target as well as the others plural strings are showing correct.
We've also checked in Xcode (15.3), the content of whether the source or target are there for all the plural forms, as you can see below.
The same issue (same string) also exists in Korean and Russian, but not in other languages we support (like German, French, Chinese), which is a bit weird to us.
Does anyone have any idea why this is happening and how can we fix it?
Post not yet marked as solved
I'm trying to expose my native shazamkit code to the host react native app.
The implementation works fine in a separate swift project but it fails when I try to integrate it into a React Native app.
Exception 'required condition is false: IsFormatSampleRateAndChannelCountValid(format)' was thrown while invoking exposed on target ShazamIOS with params (
1682,
1683
)
callstack: (
0 CoreFoundation 0x00007ff80049b761 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007ff800063904 objc_exception_throw + 48
2 CoreFoundation 0x00007ff80049b56b +[NSException raise:format:] + 0
3 AVFAudio 0x00007ff846197929 _Z19AVAE_RaiseExceptionP8NSStringz + 156
4 AVFAudio 0x00007ff8461f2e90 _ZN17AUGraphNodeBaseV318CreateRecordingTapEmjP13AVAudioFormatU13block_pointerFvP16AVAudioPCMBufferP11AVAudioTimeE + 766
5 AVFAudio 0x00007ff84625f703 -[AVAudioNode installTapOnBus:bufferSize:format:block:] + 1456
6 muse 0x000000010a313dd0 $s4muse9ShazamIOSC6record33_35CC2309E4CA22278DC49D01D96C376ALLyyF + 496
7 muse 0x000000010a313210 $s4muse9ShazamIOSC5startyyF + 288
8 muse 0x000000010a312d03 $s4muse9ShazamIOSC7exposed_6rejectyyypSgXE_ySSSg_AGs5Error_pSgtXEtF + 83
9 muse 0x000000010a312e47 $s4muse9ShazamIOSC7exposed_6rejectyyypSgXE_ySSSg_AGs5Error_pSgtXEtFTo + 103
10 CoreFoundation 0x00007ff8004a238c __invoking___ + 140
11 CoreFoundation 0x00007ff80049f6b3 -[NSInvocation invoke] + 302
12 CoreFoundation 0x00007ff80049f923 -[NSInvocation invokeWithTarget:] + 70
13 muse 0x000000010a9210ef -[RCTModuleMethod invokeWithBridge:module:arguments:] + 2495
14 muse 0x000000010a925cb4 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicEiN12_GLOBAL__N_117SchedulingContextE + 2036
15 muse 0x000000010a925305 _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 133
16 muse 0x000000010a925279 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 25
17 libdispatch.dylib 0x000000010e577747 _dispatch_call_block_and_release + 12
18 libdispatch.dylib 0x000000010e5789f7 _dispatch_client_callout + 8
19 libdispatch.dylib 0x000000010e5808c9 _dispatch_lane_serial_drain + 1127
20 libdispatch.dylib 0x000000010e581665 _dispatch_lane_invoke + 441
21 libdispatch.dylib 0x000000010e58e76e _dispatch_root_queue_drain_deferred_wlh + 318
22 libdispatch.dylib 0x000000010e58db69 _dispatch_workloop_worker_thread + 590
23 libsystem_pthread.dylib 0x000000010da67b84 _pthread_wqthread + 327
24 libsystem_pthread.dylib 0x000000010da66acf start_wqthread + 15
)
RCTFatal
facebook::react::invokeInner(RCTBridge*, RCTModuleData*, unsigned int, folly::dynamic const&, int, (anonymous namespace)::SchedulingContext)
facebook::react::RCTNativeModule::invoke(unsigned int, folly::dynamic&&, int)::$_0::operator()() const
invocation function for block in facebook::react::RCTNativeModule::invoke(unsigned int, folly::dynamic&&, int)
This is my swift file, error happens in the record function.
import Foundation
import ShazamKit
@objc(ShazamIOS)
class ShazamIOS : NSObject {
@Published var matching: Bool = false
@Published var mediaItem: SHMatchedMediaItem?
@Published var error: Error? {
didSet {
hasError = error != nil
}
}
@Published var hasError: Bool = false
private lazy var audioSession: AVAudioSession = .sharedInstance()
private lazy var session: SHSession = .init()
private lazy var audioEngine: AVAudioEngine = .init()
private lazy var inputNode = self.audioEngine.inputNode
private lazy var bus: AVAudioNodeBus = 0
override init() {
super.init()
session.delegate = self
}
@objc
func exposed(_ resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock){
start()
resolve("ios code executed")
}
func start() {
switch audioSession.recordPermission {
case .granted:
self.record()
case .denied:
DispatchQueue.main.async {
self.error = ShazamError.recordDenied
}
case .undetermined:
audioSession.requestRecordPermission { granted in
DispatchQueue.main.async {
if granted {
self.record()
}
else {
self.error = ShazamError.recordDenied
}
}
}
@unknown default:
DispatchQueue.main.async {
self.error = ShazamError.unknown
}
}
}
private func record() {
do {
self.matching = true
let format = self.inputNode.outputFormat(forBus: bus)
self.inputNode.installTap(onBus: bus, bufferSize: 8192, format: format) { [weak self] (buffer, time) in
self?.session.matchStreamingBuffer(buffer, at: time)
}
self.audioEngine.prepare()
try self.audioEngine.start()
}
catch {
self.error = error
}
}
func stop() {
self.audioEngine.stop()
self.inputNode.removeTap(onBus: bus)
self.matching = false
}
@objc
static func requiresMainQueueSetup() -> Bool {
return true;
}
}
extension ShazamIOS: SHSessionDelegate {
func session(_ session: SHSession, didFind match: SHMatch) {
DispatchQueue.main.async { [self] in
if let mediaItem = match.mediaItems.first {
self.mediaItem = mediaItem
self.stop()
}
}
}
func session(_ session: SHSession, didNotFindMatchFor signature: SHSignature, error: Error?) {
DispatchQueue.main.async {[self] in
self.error = error
self.stop()
}
}
}
objC file
#import <Foundation/Foundation.h>
#import "React/RCTBridgeModule.h"
@interface RCT_EXTERN_MODULE(ShazamIOS, NSObject);
RCT_EXTERN_METHOD(exposed:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
@end
how I consume the exposed function in RN.
const {ShazamModule, ShazamIOS} = NativeModules;
const onPressIOSButton = () => {
ShazamIOS.exposed().then(result => console.log(result)).catch(e => console.log(e.message, e.code));
};
Post not yet marked as solved
I'm trying to integrate the option to the player to save their data in the cloud, I integrate the CloudKit, change some stuff to make it work and build in Xcode to my phone.
But when I try to integrate the CloudSave, 50 unnasigned symbols jump,like this one:
Undefined symbol: _CKContainer_Default
I managed to fix them by updating the recommended settings for Xcode.
But then 4 more errors appear:
Sandbox: il2cpp(12538) deny(1) file-read-data /Users/Username/Test Apple Kit
2022/Build/Il2CppOutputProject/IL2CPP/build/deploy_arm64/il2cpp
So, don't let me build and I've looked everywhere but no one seems to had this same error
Post not yet marked as solved
Hello,
I developed a parental control app, this app has two clients one for the child and one for the parent. I could implement screen time to retrieve the child's screen time data and show it to the child by ActivityReportExtension but I didn't find any document to implement this feature on the parent device. I mean like the Apple screen time, parents can see their children's screen time (in the settings>screen time) I need to implement ActivityReportExtension in the parent client of my app that shows the child's screen time.
is it possible or this API is only restricted to Apple itself?
Post not yet marked as solved
[Q] What type of profiles are officially reported by the ES_EVENT_TYPE_NOTIFY_PROFILE_ADD and ES_EVENT_TYPE_NOTIFY_PROFILE_REMOVE events?
It looks like to be only Configuration Profiles. Which would make sense as the properties of es_profile_t match closely the payload keys of a configuration profile file.
Also only addition and removal of configuration profiles are reported when playing with configuration profiles and provisioning profiles.
Post not yet marked as solved
how long will my app in review, it's almost 17 days,?
Post not yet marked as solved
Hi,
We are currently working on a baby monitor app that utilizes NEAppPushProvider to deliver push notifications since we can't rely on an internet connection.
Similar to the example, we are adding and removing the matchSSIDs of NEAppPushManager to start and stop the extension for activating and deactivating notifications during monitoring. It works as expected.
However, we now want to detect if the device loses the Wi-Fi connection, and I'm struggling to determine how to distinguish between intentional changes to matchSSIDs and an actual loss of connection.
Is there another method to halt the extension?
Thanks in advance!
Post not yet marked as solved
my app got reject for reason "other", It's almost a month passed, I got no resonse, no email, please help
Post not yet marked as solved
Trying to install a mobile provision on my iPad from Windows 10 using iTunes. The error message is as above.
I've checked and rechecked the mobile provision. The UUID of my device is contained within my mobile provision. I also tried on MacOS with the same error code.
I'm not sure what else to try. I tried making a new mobile provision, I tried readding my device (which isn't possible since it's just the same UUID as an already existing device.
I updated iTunes to the latest verison, I've upgraded my iPad OS to the latest version (17.5)
Post not yet marked as solved
We have an app, under our company IOS account which is a white label software our company started with. We own the app store, they own the back end.
We have spent the last 12 months developing our own IP, we are now ready to push it to market. Long story short its a rideshare platform, we do about 1500 rides a day and have roughly 300 drivers active on the system.
The driver app is fine, we can created this IOS account separately to host that, but we obviously need to push the update of our client app. I realize without our current developer knowing or playing ball we cant "force the update" and thats a hurdle we are okay with.
HOWEVER the 5-10 potential days that we have to submit the final build as an update scares the crap out of me, if our developer takes the news poorly they could crash the back end and 300 drivers are out of work and thousands of clients are without rides to work, doctors, school etc (we operate in towns and cities with no other options)
If we set our old developer permissions to only see "old app", we then upload "new app" can we somehow seek approvals, do configurations and then still use the new app as an update over the old app rather than as new software?
This would simply help eliminate 90% of the time where the old developer could get upset and disrupt or crash the business.
Right now the plan is to lock out the old developer, send them an honest, polite email explaining our choice, as well as a bit of a financial bribe (which to be frank we cant afford so it hurts) but lets say they have sometimes been stubborn and not fun to work with, so I am not confident.
Im hoping that is not our only option to go through this one of situation.
Key notes:
New developer says they need 3-5 days after submitted to the app store for configuration and testing (so far testing is on their apple account/testflgiht)
Typically beyond that apple could be another 2-7 days for approval and update
Even at this point we have no way to force the update, because we dont have access to the previous back end
300 peoples jobs, 1500 peoples daily transportation depend on us not being down for an extended period of time, which to be blunt our current developer may not care about when considering making the transition easy.
Post not yet marked as solved
Hello, our game Nerd Survivors has been identified as spam. The game is based on an original IP and the only games that should share any resemblance with it are from our company.
Today we got notified the rejection due to the violation of Guideline 4.3 but there is no reference to the other application or even a contact to the other developer.
We do use Unity as our game engine, so some parts of the code might be shared across different games, but i cannot find any other justification of the failure.
"Guideline 4.3(a) - Design - Spam
We noticed your app shares a similar binary, metadata, and/or concept as apps submitted to the App Store by other developers, with only minor differences.
Submitting similar or repackaged apps is a form of spam that creates clutter and makes it difficult for users to discover new apps."
Post not yet marked as solved
Hello,
I try to create a product in app purchase with the API calls. I meet a problem during this creation for some products, see the error message :
Erreur lors de l'appel d'API Apple : { "errors" : [ { "id" : "89876075-5f2a-44ea-a910-fcbcf95ea641", "status" : "409", "code" : "ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE", "title" : "The provided entity includes an attribute with a value that has already been used", "detail" : "This product ID has already been used", "source" : { "pointer" : "/data/attributes/productId" } } ] }
It seems that the productId has already created but when we check in the app we cannot find its.
Is it possible that if the productId has already created and deleted after ? And now we cannot created again with the samed productId ?
Thank you in advance to help us.
Best Regards.
Post not yet marked as solved
When user is trying to remove login using "Stop Using Apple Id", it should remove the app and login but in my case, nothing is happening. Its not removing either login or app from the logged in list. App is in Testflight for testing.
Ideally, it should remove the login and app from the list as per the following article.
https://support.apple.com/en-in/102571
Read few article, which says testflight could be buggy. Anyone knows how it could be fixed?
Post not yet marked as solved
I've come to the conclusion that TPP and UDP are just utterly wonky together.
This is my relevant code:
let host = NWHostEndpoint(hostname: "", port: "0")
let udpRule = NENetworkRule(destinationNetwork: host, prefix: 0, protocol: .UDP)
let tcpRule = NENetworkRule(destinationNetwork: host, prefix: 0, protocol: .TCP)
let settings = NETransparentProxyNetworkSettings(tunnelRemoteAddress:"127.0.0.1")
/*
* These three lines are a hack and experiment
*/
let quicHost_1 = NWHostEndpoint(hostname: "", port: "80")
let quicHost_2 = NWHostEndpoint(hostname: "", port: "443")
let quicRule_1 = NENetworkRule(destinationNetwork: quicHost_1, prefix: 0, protocol: .UDP)
let quicRule_2 = NENetworkRule(destinationNetwork: quicHost_2, prefix: 0, protocol: .UDP)
settings.includedNetworkRules = [quicRule_1, quicRule_2, tcpRule]
settings.excludedNetworkRules = nil
Directing UDP through a TPP breaks FaceTime, AirDrop, and a bunch of VPNs
Despite the documentation implication that you can't do DNS control with a TPP ("A port string of 53 is not allowed. Use Destination Domain-based rules to match DNS traffic."), if I opt into UDP (settings.includedNetworkRules = [udpRule, tcpRule]), then I see traffic to port 53, and can do things with it.
If I use a wild-card network rule (the code above), then the TPP does not seem to get any UDP flows at all.
If I use a wild-card exclusion rule (using NWHostEndpoint(hostname: "", port: "53")), then everything starts breaking.
If I use NENetworkRule(destinationHost: host, protocol: .UDP), it complains because the prefix must be 32 or less.
I've filed feedbacks, and engaged with eskimo (really, thank you), and looked at previous threads, so mostly this is begging: has anyone gotten this to work as expected? I no longer think I'm being obviously wrong with my code, but I would be super delighted to find out I've missed some tricks or angles.
Post not yet marked as solved
I have a mind mapping app that has been running well on Android for a few years now. I have been trying to publish it for iOS and MacOS for some time now. On iOS (as an app) and MacOS (in the browser for testing) I have a problem with the export. The app is a project in Angular, Cordova, Typescript. The problem only occurs in the Safari browser, which is also used in the Cordova version for iOS. I was able to test it on my Mac and an iPhone. The error does not occur on the Mac in Chrome.
The Problem
If I export a mind map that contains images as an image (.png), the images of the nodes are not displayed in the exports. Everything else in the map is exported correctly, only the images are missing. Only when I export the map three times are the images present in the export. If I add a new image and export it again, the image is only visible in the exported image after 3 exports. It is interesting that the export as SVG, which I also offer, contains the images of the nodes. So the SVG string that I create has all the necessary information.
The base
The mind map consists of various things. HTML and CSS for the frames, lines etc... The images of the nodes are saved as Base64 and each node is in a Foreign Object.
Example of the SVG export
Mindmap with 2 nodes and the Base64 characters of the node images have been replaced with ***.
__
SVG-String.txt
Attached because otherwise too long.
This is how I export the .png file.
I can view all this content in the map view of the app. When exporting to an image, I take this information, turn it into an SVG, have the browser draw it on the canvas and then output it as a graphic. Something must be going wrong at this point.
private exportAsImage(
mindMap: MindMap,
scale?: number,
type: string = "png"
): Observable<any> {
return new Observable(o => {
this.progress.start(this.progress.PROGRESS_MAJOR);
this.mmpMap.export(this.mapVizService.getExportClassList(mindMap),
(svgStr: string) => {
this.exportService.imageFromSVGString(svgStr, type, scale).pipe(
switchMap(img =>
of(
Utils.dataURItoFileObject(
img.dataUri,
`${Utils.sanitizeFilename(mindMap.title)}.${type}`
)
)
),
switchMap((fileObject: FileObject) =>
this.mapsService.saveAsTemp(fileObject, true, {
message: this.translate.instant("mdz.mindmap.saveas.message"),
// subject: this.translate.instant("mdz.mindmap.saveas.subject"),
subject: fileObject.name,
url: `www.myURL.com`
}, true)
)
).subscribe(() => {
this.progress.stop(this.progress.PROGRESS_MAJOR);
o.next();
o.complete();
}, err => {
this.progress.stop(this.progress.PROGRESS_MAJOR);
o.error(err);
o.complete();
});
})
});
}
What I have already tried.
I have already tested various things such as time delays etc..., none of which change anything. It seems to me that it's a combination of the caching and the order or speed at which the images are loaded. Only the speed can't be, because built-in delays don't change anything.
My guess
But it must have something to do with Safari because on the Mac in Chrome it runs without problems... Maybe it can't handle so many base64 images or it exports faster than it renders? Whereby the SVG export contains all the information and when I open the SVG, all the content is also displayed in the browser in seconds. So something must happen when painting on the canvas and outputting as an image.
It doesn't really make sense, I'm really at the end of my ideas. What can you do?
I really hope you can help me. A mind mapping app without image export makes little sense. And since the app otherwise works great, I'm really getting desperate. :(
Thanks a lot!
Rob
Post not yet marked as solved
#0 Thread
NSInternalInconsistencyException
UITableView dataSource is not set
0
CoreFoundation
___exceptionPreprocess + 164
20
UIKitCore
___swift_destroy_boxed_opaque_existential_1Tm + 12004
There is very little information about the call to the stack.
Some of our iOS App users are suddenly experiencing a ** "UITableView dataSource is not set"** crash.
I don't think it's a coincidence that these users are all 17.4.1 users.
Post not yet marked as solved
I am going through the list of ways to check if my app is given Full Disk Access (FDA) or not. Out of which only one method is supported by apple.
@note The only supported way to check if an application is properly TCC authorized for Full Disk Access
* is to call es_new_client and handling ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED in a way appropriate
* to your application.
I have implemented this method using EndpointSecurity and calling it from a root process as required. But when I disable System Integrity Protection (SIP) and call it, it succeeds without FDA. No error is thrown. Then I tested, in our app both EndpointSecurity and protected folder access (like Documents folder) functionalities are working fine even without FDA when SIP is disabled. Now my questions are
When SIP disabled, does every app has FDA access by default?.
Is there any use case that still needs FDA access when SIP is off?.
Is there any way to check for FDA permission given or not whenever SIP is off, since above method won't work in that case?.
Post not yet marked as solved
Just as you can right-click and force a file to 'Download Now', is there a way to force iCloud to prioritise a file to upload immediately?
Post not yet marked as solved
When using individual key to retrieve sales report via https://api.appstoreconnect.apple.com/v1/financeReports, I keep receiving status:500, unexpected_error. Other endpoints are fine.
Anybody also have this issue?
Post not yet marked as solved
Hello,
I am using CAMetalDisplayLink to render my metal layer and i am trying to calculate timestamp for next render to compare with current timestamp.
I did notice that timestamp from display link Update is not like Date timestamp. Looks like it depends on some kind of phone boot or another kernel process start. I did try
func bootTime() -> TimeInterval? {
var tv = timeval()
var tvSize = MemoryLayout<timeval>.size
let err = sysctlbyname("kern.boottime", &tv, &tvSize, nil, 0);
guard err == 0, tvSize == MemoryLayout<timeval>.size else {
return nil
}
return Double(tv.tv_sec) + Double(tv.tv_usec) / 1_000_000.0
}
And i got
calc
1715680889.6883893
real
1715680878.01257
It's close but still 10 seconds different so probably it's not kern.boottime but something similar.
Anybody knows what should i use to get correct timestamp?