Ok,
on Feedback, Apple reply there are currently no plans to address this issue.
The best practice is to prefix all methods in a category (as @eskimo said)
--
Post
Replies
Boosts
Views
Activity
What I do not understand,
on my XS Max previous methods are added on WebView loadRequest
on my 15 Pro Max methods are already added in Application delegate didFinishLaunching...
Same code runing in same time from same Xcode
But it explain why some category of devices have the issue from start, and other not or only with some actions in the app
In fact, if we make DIFF between all methods of "NSData* data" before and after the call of loadRequest :
unsigned char toto[] = "titi";
NSData* data = [NSData dataWithBytes:toto length:4];
NSLog(@"%@", [data performSelector:@selector(_methodDescription)]);
[self.myWebView loadRequest:urlReq];
NSLog(@"%@", [data performSelector:@selector(_methodDescription)]);
it may be scary if you have one of this methods added :
- (unsigned long) u64BE:(unsigned long)arg1; (0x23856f0c0)
- (unsigned long) u64LE:(unsigned long)arg1; (0x23856f094)
- (unsigned short) u16BE:(unsigned long)arg1; (0x23856efd4)
- (unsigned short) u16LE:(unsigned long)arg1; (0x23856efa8)
- (unsigned int) u32BE:(unsigned long)arg1; (0x23856f034)
- (unsigned int) u32LE:(unsigned long)arg1; (0x23856f008)
- (id) sha1; (0x238565bd0)
- (id) sha256; (0x238565c64)
- (id) sha384; (0x238565cf8)
- (id) asHexString; (0x23856ed34)
+ (id) dataWithHexString:(id)arg1; (0x23856edf0)
+ (id) randomData:(unsigned long)arg1; (0x238566b98)
+ (id) withU16BE:(unsigned short)arg1; (0x23856f0f0)
- (BOOL) isAllZero; (0x23857012c)
- (BOOL) isEqualToHexCString:(const char*)arg1; (0x238570218)
... etc ( I don't put all )
AMAZING << 2 !
I ask a user to send me a screen record, and I see he have a "accessibility shortcut" activated.
Let's try :
Add "Accessibility > Accessibility shortcut > Full Keyboard Access"
Select "Full Keyboard Access" in menu
Then, when I launch my app, from the start of the first screen (without WebView call) , my [NSData sha256] function is remplaced like the previous case with the WebView.
--
So, i can reproduce by this way :
=> Settings / Accessibility / Keyboards / Full keyboard access : ON / OFF
ON : NSData have sha256 function replaced by the system
OFF : NSData keep my sha256 function and the app works fine
AMAZING ! look at this :
How reproduce the issue - not only in iPhone PRO
NSData+Tools.h add function
@interface NSData (Tools)
- (NSString *)sha256; // see the code above with CC_SHA256
// ...
@end
In a UIView with a WKWebView :
- (void)viewDidLoad
{
NSURL *url = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html" subdirectory:@"www"];
NSURLRequest* urlReq = [NSURLRequest requestWithURL:url];
unsigned char toto[] = "titi";
NSData* data = [NSData dataWithBytes:toto length:4];
id hash;
hash = [data sha256];
DLog( @"1 NSData SHA256 %@", hash );
[self.myWebView loadRequest:urlReq];
hash = [data sha256];
DLog( @"2 NSData SHA256 %@", hash );
}
log :
1 NSData SHA256 cce66316b4c1c59df94a35afb80cecd82d1a8d91b554022557e115f5c275f515
2 NSData SHA256 {length = 32, bytes = 0xcce66316 b4c1c59d f94a35af b80cecd8 ... 57e115f5 c275f515 }
My function sha256 was replaced when calling loadRequest !
Hi @eskimo
Yes, the issue seems happend always for devices which have the issue one time.
I have 2 apps with this same code, when the issue happens on a device the 2 apps have the issue,
I ask to restart the device, uninstall/install the app, check 4G/Wifi/VPN*, but nothing change.
I can't ask those users more action, TestFlight is too involving.
I have tested on simulator : no issue.
I just buy a 15 Pro for testing (!) and unfortunately i can't reproduce the issue.
Thanks for any other info.
(*) first i suspect network problem with NSURLSessionDownloadTask.
The more time passes, the more samples can help to find common points.
At this time :
Only 17.4 concerned
Pro and Pro Max are mainly concerned but not all and not specific iPhone number (13/14/15)
One user with iPhone 14 MPW73CH/A contact me for the first time (!?)
So, you’ve tested this with iOS 17.4 on a model that matches what one of your affected users has?
I do not have a pro version. I ask some users but they don't have this issue.
Others devices tested do not have the issue.
Thank you
Hello,
Here the code "flatted" - executed in main thread.
NSString* pfn = /* path file name */
NSData* data = [NSData dataWithContentsOfFile:pfn];
....
if( data.length > 0 )
{
CC_LONG hashLen = CC_SHA256_DIGEST_LENGTH;
unsigned char hash[ hashLen ];
CC_SHA256( data.bytes, (CC_LONG)data.length, hash );
NSMutableString *output = [NSMutableString stringWithCapacity:hashLen * 2];
for (int i = 0 ; i < hashLen ; i++ )
[output appendFormat:@"%02x", hash[i]];
return output;
}
return nil;
and then, NSString is compared to the required Hash.
What we know with some tests elsewhere :
required hash length > 0
file exists, file have the good size (about 4400 bytes)
data.length > 0
the code above return not nil (output)
but comparaison return not equal for a small part of all devices, and only from iOS17.4
I would say no. But others may have another interpretation.
The limit is the same for monetized widgets or others extensions. They are available but it is their content that is monetized.
https://developer.apple.com/app-store/review/guidelines/
3.2 Other Business Model Issues
...
3.2.2 Unacceptable
...
(ii) Monetizing built-in capabilities provided by the hardware or operating system
For me WatchOS9.1 update fixed the issue.
Hi.
Same problem here.
Users who have switched to WatchOS9 no longer have the option of using the Picker.
Hi,
I have the same problem with iOS15 (public final version) on iPhone, not on iPad
Any news about it ?
Thanks
-- duplicate --
Hi,any news about that ?my app (already in appstore) stop using custom intent on iPhone / 13.4.1Thanks