Hi,Recently I installed iPadOS public beta and bought an external third party keyboard. The spacebar of the keyboard does not work properly on some applications including the native email app. When I clicked on the spacebar, it inputs newline instead of space. Also, I noticed I can input space by clicking on shift+spacebar or alt+spacebar.I tried with another keyboard and same issues persists. Is this an issue from iPadOS public beta?Anyone experiencing the same issues?
Posts under iPadOS tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
I am currently writing a iPadOS application to act as a companion to the desktop version that controls a piece of hardware via a USB CDC serial connection. Due to modern iPads having USB-C ports for the last 2 years and the ability to attach certain USB devices via adaptors since the origin of the 30pin doc connector I would expect protocol availability to be fairly complete. So then why is it that the headers required to use USB CDC serial don't exist and if you make them yourself you need to use illegal symbols so you can't upload it to App Store connect.
Where as USB CDC ethernet has full support along with Bluetooth RFCOMM (rs232 serial over bluetooth) and even USB MIDI given that midi is a superset of serial. So why isn't there a USB CDC serial kit/api/even just allowing a data stream to the TTY/CU port?
If there is a way please tell me what it is and point me to the documentation.
I have a question about how to implement Picture in Picture mode for the new video calling service, I have already read some of the documentation provided by Apple.
Is it possible to implement Picture in Picture mode even if I use an external SDK for video calling such as Agora to implement the video calling service?
https://www.agora.io/en/
Is it possible to set the call screen to Picture in Picture mode for a non-video call?
Do you think it would be difficult to implement on iOS15 or earlier (e.g. iOS14)? (I read this article.) In iOS 15 and earlier, you cannot keep the camera active during PiP, so unfortunately video calls are not possible. However, in iOS 15, the "Multitasking Camera Access Entitlement" allows you to use the AVPictureInPictureController to keep the camera recording while in PiP mode).
Is this definitely feasible this fall when iOS15 is available?
Hi,
An Apple bug has caused our iPad App sales to plummet and customers have contacted Apple asking for refunds.
This bug is not our fault, it is Apple's fault. I reported it to Apple last November and the ticket is still open and nothing has been done. They can't even be bothered to reply when I ask about the progress. I am disgusted with Apple.
So, how liable is Apple?
Regards,
Paul
My app uses UICollectionView to display a list of documents. I previously implemented UICollectionViewDragDelegate to support drag-and-drop of the documents to open new windows / window scenes. This was working fine in iPadOS 15, but when I upgraded to iPadOS 16 beta 4 it stopped working. I can still drag items, but they don't open new windows (and the + icon never appears). How can I debug this?
I can open new windows in my app using the Dock, so in general multiple windows still work in my app. The sample code for multiple windows, Gallery, works great so my iPad does support drag-and-drop multitasking. I can't figure out what is different between my app and Gallery...
This is the drag-and-drop code, which is very similar to the Gallery sample app. Are there other places in the app I should look to debug, like other delegate methods?
func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
let location = session.location(in: collectionView)
guard let indexPath = collectionView.indexPathForItem(at: location) else {
return []
}
let documentIndex = indexPath.row
let documentInfo = documentsToDisplay[documentIndex]
let itemProvider = NSItemProvider()
// I've confirmed this NSUserActivity.activityType is registered in Info.plist NSUserActivityTypes
itemProvider.registerObject(NSUserActivity.canvasUserActivity(documentId: documentInfo.documentId, accessLevel: documentInfo.accessLevel), visibility: .all)
let dragItem = UIDragItem(itemProvider: itemProvider)
dragItem.localObject = DocumentDragInfo(document: documentInfo, indexPath: indexPath)
return [dragItem]
}
Hi,
in an App I maintain we have a huge crash count at launch on the iPad. While I can't reproduce it, looking at the stack trace it seems
[UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone
evaluates to true under some conditions on iPadOS 15. (the crash occurs in an UIViewController that is allocated only on the iPhone in one code location)
Is there anything that can cause [UIDevice currentDevice] to return nil, e.g. blocking the main thread?
Thanks!
Hi,
It seems that there's a bug in the iOS and iPadOS 16 betas (i've not test in macOS 13 yet), that when after updating a List data source with a bigger array, scrolling to a row of an offset bigger than the previous data array, with ScrollViewProxy, will crash the app with an EXC_BREAKPOINT (code=1, subcode=0x1099d6004) error.
Below I attached a sample code to reproduce the crash. In it when opening there's an empty list. When pressing the "Randomize & Select Last" button at the top, the list will be filled with 5 random UUIDs, followed by scrolling to the last row. The app will crash on the second try, when it will try to scroll to an offset bigger than the previous data array (the last row).
As a control there's an "Randomize & Select Random" button that will behave more or less like the "Randomize & Select Last" button but will choose a random row to select and scroll. It will only crash if this select row if of an offset bigger that the size of the previous array.
This doesn't happen in iOS 15.
I've already posted the Radar as FB11302966, however if someone has any toughs on how to solve this problem (or what I'm doing wrong) they are welcome.
Sample code:
///A simple data model for the demo. Only stores an UUID.
struct DataModel: Identifiable, Hashable {
let id: UUID = UUID()
var nameUUID: String {
id.uuidString
}
}
struct ContentView: View {
///Array with some data to show
@State private var data: [DataModel] = []
///Selected row
@State private var selection: DataModel?
var body: some View {
VStack(alignment: .leading) {
HStack {
//Create a new array for showing in the list.
//This array will be bigger than the last one.
//The selection will be the last element of the array (triggering the bug)
Button {
//Increment the size of the new List by 5
let numberElements = data.count + 5
//Create a new Array of DataModel with more 5 elements that the previous one
let newData = (0 ..< numberElements).map { _ in DataModel() }
//Select the last element of the array/list.
//This will make sure that the scrollTo will go to the end
let newSelection = newData.last
//Update STate for the new values
data = newData
selection = newSelection
} label: {
Text("Randomize & Select Last")
}
Spacer()
//Create a new array for showing in the list.
//This array will be bigger than the last one.
//The selection will be the a random element of the array (only triggering the bug when the element is )
Button {
//Increment the size of the new List by 5
//If empty will start with 40 (reducing the odds of triggering the bug)
let numberElements = data.count == 0 ? 40 : data.count + 5
//Create a new Array of DataModel with more 5 elements that the previous one
let newData = (0 ..< numberElements).map { _ in DataModel() }
//Select a random element of the array/list.
//This will scroll if the element is 'inside' the previous list
//Otherwise will crash
let newSelection = newData.randomElement()
//Update State for the new values
data = newData
selection = newSelection
} label: {
Text("Randomize & Select Random")
}
}
.padding()
//MARK: ScrollViewReader and List
ScrollViewReader {
proxy in
List(data, selection: $selection) {
dataElement in
//Row (is only the UUID for the rows
Text(dataElement.id.uuidString)
.id(dataElement)
.tag(dataElement)
}
//action that fires when data changes
//it will scroll to the selection
.onChange(of: data, perform: { newValue in
if let selection {
proxy.scrollTo(selection)
}
})
}
}
}
}
We are developing driver for our USB device. Our approach is to run and test driver on macOS first and then verify on iPadOS 16. In the driver we add custom property -"kUSBSerialNumberString" into default properties:
OSDictionary * Driver::devicePropertiesWithSerialNumber() {
kern_return_t ret;
OSDictionary *properties = NULL;
OSDictionary *dictionary = NULL;
OSObjectPtr value;
const IOUSBDeviceDescriptor *deviceDescriptor;
deviceDescriptor = ivars->device->CopyDeviceDescriptor();
ret = CopyProperties(&properties);
value = copyStringAtIndex(deviceDescriptor->iSerialNumber, kIOUSBLanguageIDEnglishUS);
Log("Serial number: %{public}s", ((OSString *)value)->getCStringNoCopy());
dictionary = OSDictionary::withDictionary(properties, 0);
OSSafeReleaseNULL(properties);
if (value) {
OSDictionarySetValue(dictionary, "kUSBSerialNumberString", value);
OSSafeReleaseNULL(value);
}
return dictionary;
}
next in kern_return_t IMPL(Driver, Start) we call SetProperties:
ret = SetProperties(devicePropertiesWithSerialNumber());
if(ret != kIOReturnSuccess) {
Log("Start() - Failed to set properties: 0x%08x.", ret);
goto Exit;
}
We can read our property on macOS using:
func getDeviceProperty(device: io_object_t, key: String) -> AnyObject? {
IORegistryEntryCreateCFProperty(
device, key as CFString, kCFAllocatorDefault, .zero
)?.takeRetainedValue()
}
if let serialNumber = getDeviceProperty(device: driver, key: "kUSBSerialNumberString") {
print("serialNumber: \(serialNumber)")
}
However getDevicePropertyon iPadOS returns nil. We are wondering is any limitation for IORegistry entries(properties) on iPadOS16? Is any way to add custom property to IORegistry?
BTW, we added debug method to print all the available properties for IORegistry:
private func debugRegistry(device: io_object_t) {
var dictionary: Unmanaged<CFMutableDictionary>?
IORegistryEntryCreateCFProperties(device, &dictionary, kCFAllocatorDefault, .zero)
if let dictionary = dictionary {
let values = dictionary.takeUnretainedValue()
print(values)
}
}
It returns just 1 property for iPadOS:
{
IOClass = IOUserService;
}
and much more for macOS including our custom one:
{
CFBundleIdentifier = "****";
CFBundleIdentifierKernel = "com.apple.kpi.iokit";
IOClass = IOUserService;
IOMatchCategory = "***";
IOMatchedPersonality = {
CFBundleIdentifier = "****";
CFBundleIdentifierKernel = "com.apple.kpi.iokit";
IOClass = IOUserService;
IOMatchCategory = "****";
IOPersonalityPublisher = "****";
IOProviderClass = IOUSBHostInterface;
IOResourceMatch = IOKit;
IOUserClass = Driver;
IOUserServerCDHash = 9cfd03b5c1b90da709ffb1455a053c5d7cdf47ac;
IOUserServerName = "*****";
UserClientProperties = {
IOClass = IOUserUserClient;
IOUserClass = DriverUserClient;
};
bConfigurationValue = 1;
bInterfaceNumber = 1;
bcdDevice = 512;
idProduct = XXXXX;
idVendor = XXXXX;
};
IOPersonalityPublisher = "*****";
IOPowerManagement = {
CapabilityFlags = 2;
CurrentPowerState = 2;
MaxPowerState = 2;
};
IOProbeScore = 100000;
IOProviderClass = IOUSBHostInterface;
IOResourceMatch = IOKit;
IOUserClass = Driver;
IOUserServerCDHash = 9cfd03b5c1b90da709ffb1455a053c5d7cdf47ac;
IOUserServerName = "*****";
UserClientProperties = {
IOClass = IOUserUserClient;
IOUserClass = DriverUserClient;
};
bConfigurationValue = 1;
bInterfaceNumber = 1;
bcdDevice = 512;
idProduct = XXXXX;
idVendor = XXXXXX;
kUSBSerialNumberString = XXXXXXXXXXX;
}
Hi,
I am working on an iPad application that has both Portrait and Landscape orientation. The issue that I am facing is regarding the the popup presentation that iPad shows you for saving password while you log-in in the application.
Now, when the pop-up is presented, at that moment if I try to rotate the device, the application crashes with the message
Application tried to present modally a view controller <_SFAppPasswordSavingViewController: 0x107be7230> that is already being presented by <UIKeyboardHiddenViewController_Save: 0x107a49190>.
Now, the problem is that SFAppPasswordSavingViewController presentation is not controlled by me. Also UIKeyboardHiddenViewController_Save,is something I am not controlling.
Please help me out on how to solve this issue or let me know if I am missing anything.
I found a glitch on my app on iOS/iPadOS 16.1. The directory to open files is not saved. I filed this on Feedback Assistant but Apple says that it is a specified behavior.
Isn't it a bug?
//
// ViewController.m
//
#import "ViewController.h"
#import <UniformTypeIdentifiers/UniformTypeIdentifiers.h>
@interface ViewController () <UIDocumentPickerDelegate>
@end
@implementation ViewController
{
NSURL *directoryURL;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray<NSURL *> *)urls
{
directoryURL = [[urls firstObject] URLByDeletingLastPathComponent];
}
- (IBAction)trigger:(id)sender
{
UIDocumentPickerViewController *picker = [[UIDocumentPickerViewController alloc] initForOpeningContentTypes:@[UTTypeData] asCopy:NO];
picker.directoryURL = directoryURL;
[self presentViewController:picker animated:YES completion:nil];
}
@end
To reproduce the issue.
Tap the button and select a file on another directory.
Tap the button again.
The directory should be the selected one but is the default one.
You used to be able to select a drawing, long press to show the edit menu (copy, duplicate, delete, ...), copy the item and paste it after another long press on the canvas. However, since iOS / iPadOS 16.1 long pressing the canvas does not show any menu.
The action still works if you connect an external mouse to your iPad, activate the secondary click functionality and use the right mouse button to click on the canvas. This shows the menu and you can paste the copied drawing.
It seems to be broken in all PencilKit-based apps, including Apple's sample apps. Is there any workaround? This is a major problem for my app and used to work fine since the introduction of PencilKit with iOS 13.
Hi,
As you can see in the code below whenever I open the app in the normal mode app works fine and the detail view shows data properly. However, in split screen the app lost data of the selected item. I'm sure there is a bug in here unless I should manage it by myself which unacceptable!
@main
struct TestSwiftUIApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct Employee: Identifiable {
let name: String
let id: Int
}
struct ContentView: View {
@State
var selectedEmployeeId: Employee.ID?
let employess: [Employee] = [.init(name: "Hamed", id: 1), .init(name: "John", id: 2)]
var body: some View {
NavigationSplitView {
List(employess, selection: $selectedEmployeeId) { employee in
Text(employee.name)
}
} detail: {
NavigationStack {
if let employee = employess.first{$0.id == selectedEmployeeId} {
EmployeeDetails(employee: employee)
}
}
}
}
}
struct EmployeeDetails: View {
let employee: Employee
var body: some View {
Text("Detail of empolyee\(employee.name) with id: \(employee.id)")
}
}
I am getting random crash from time to time while using SwiftUI
but i cannot find a way to get more context into the crash
how to find the root cause?
didn't even get more info while the crash happened while connected to XCode Version 14.1 (14B47b)
OS Version: iPhone OS 16.1 (20B82)
Release Type: User
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000019a9edeb4
Termination Reason: SIGNAL 5 Trace/BPT trap: 5
Terminating Process: exc handler [45365]
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 SwiftUI 0x19a9edeb4 0x19a9c3000 + 175796
1 SwiftUI 0x19a9ede98 0x19a9c3000 + 175768
2 SwiftUI 0x19aa02da4 0x19a9c3000 + 261540
3 libswiftCore.dylib 0x1910dd138 Slice.index(after:) + 48
4 SwiftUI 0x19abd4d48 0x19a9c3000 + 2170184
5 SwiftUI 0x19ac16594 0x19a9c3000 + 2438548
6 libswiftCore.dylib 0x190f29678 BidirectionalCollection.index(_:offsetBy:) + 292
7 SwiftUI 0x19a9edd00 0x19a9c3000 + 175360
8 SwiftUI 0x19be30904 0x19a9c3000 + 21420292
9 SwiftUI 0x19bc2ffa8 0x19a9c3000 + 19320744
10 SwiftUI 0x19b7b1034 0x19a9c3000 + 14606388
11 SwiftUI 0x19b7afc20 0x19a9c3000 + 14601248
12 SwiftUI 0x19b7b21e4 0x19a9c3000 + 14610916
13 UIKitCore 0x1994e57d4 -[UICollectionView _selectItemAtIndexPath:animated:scrollPosition:notifyDelegate:deselectPrevious:performCustomSelectionAction:] + 1060
14 UIKitCore 0x1997314d4 -[UICollectionView touchesEnded:withEvent:] + 480
15 UIKitCore 0x1993e7514 forwardTouchMethod + 284
16 UIKitCore 0x1993e7514 forwardTouchMethod + 284
17 UIKitCore 0x1993e7514 forwardTouchMethod + 284
18 UIKitCore 0x1993e7514 forwardTouchMethod + 284
19 UIKitCore 0x1993185e0 _UIGestureEnvironmentUpdate + 5772
20 UIKitCore 0x199b9ce14 -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 288
21 UIKitCore 0x1992dc31c -[UIGestureEnvironment _updateForEvent:window:] + 188
22 UIKitCore 0x1992e0c74 -[UIWindow sendEvent:] + 3268
23 UIKitCore 0x1992dff44 -[UIApplication sendEvent:] + 672
24 UIKitCore 0x1992df600 __dispatchPreprocessedEventFromEventQueue + 7084
25 UIKitCore 0x1993273e4 __processEventQueue + 5632
26 UIKitCore 0x199f790a4 updateCycleEntry + 168
27 UIKitCore 0x199837740 _UIUpdateSequenceRun + 84
28 UIKitCore 0x199e7efd0 schedulerStepScheduledMainSection + 172
29 UIKitCore 0x199e7e19c runloopSourceCallback + 92
30 CoreFoundation 0x1970fdf54 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
31 CoreFoundation 0x19710a32c __CFRunLoopDoSource0 + 176
32 CoreFoundation 0x19708e210 __CFRunLoopDoSources0 + 244
33 CoreFoundation 0x1970a3ba8 __CFRunLoopRun + 836
34 CoreFoundation 0x1970a8ed4 CFRunLoopRunSpecific + 612
35 GraphicsServices 0x1cfb05368 GSEventRunModal + 164
36 UIKitCore 0x1995873d0 -[UIApplication _run] + 888
37 UIKitCore 0x199587034 UIApplicationMain + 340
38 libswiftUIKit.dylib 0x19fb73308 UIApplicationMain(_:_:_:_:) + 104
39 Fyzio Klinik Doctor 0x10445b2d8 static UIApplicationDelegate.main() + 104
40 Fyzio Klinik Doctor 0x10445b260 static AppDelegate.$main() + 44
41 Fyzio Klinik Doctor 0x10445b450 main + 28
42 dyld 0x1b5700960 start + 2528
Thread 1:
0 libsystem_pthread.dylib 0x1e370eb90 start_wqthread + 0
We implemented communication between Swift App and DriverKit driver using IOConnectCallAsyncStructMethod.
void USBDriverClass::registerAsyncCallback(){
// Async required variables
notificationPort = NULL;
machNotificationPort = NULL;
runLoopSource = NULL;
// Async initialization
globalRunLoop = CFRunLoopGetMain();
CFRetain(globalRunLoop);
notificationPort = IONotificationPortCreate(kIOMainPortDefault);
if (notificationPort == NULL)
{
printf("Failed to create notification port for application.\n");
}
machNotificationPort = IONotificationPortGetMachPort(notificationPort);
if (machNotificationPort == 0)
{
printf("Failed to get mach notification port for application.\n");
}
runLoopSource = IONotificationPortGetRunLoopSource(notificationPort);
if (runLoopSource == NULL)
{
printf("Failed to get run loop for application.\n");
}
// Establish our notifications in the run loop, so we can get callbacks.
CFRunLoopAddSource(globalRunLoop, runLoopSource, kCFRunLoopDefaultMode);
// Establish our "AsyncCallback" function as the function that will be called by our Dext when it calls its "AsyncCompletion" function.
// We'll use kIOAsyncCalloutFuncIndex and kIOAsyncCalloutRefconIndex to define the parameters for our async callback
// This is your callback function. Check the definition for more details.
asyncRef[kIOAsyncCalloutFuncIndex] = (io_user_reference_t)AsyncCallback;
// Use this for context on the return. For example you might pass "this". But since this example is entirely static, we'll skip that step.
asyncRef[kIOAsyncCalloutRefconIndex] = (io_user_reference_t)NULL;
kern_return_t ret = kIOReturnSuccess;
uint8_t words = 4;
size_t inputSize = sizeof(StructA);
StructA structA;
structA.tag = 1;
structA.length = 0;
structA.values[0] = 0x106000;
structA.values[1] = words * sizeof(uint32_t);
size_t outputSize = sizeof(OutputData);
OutputData data;
printf("registerAsyncCallback called");
ret = IOConnectCallAsyncStructMethod(connection, MessageType_RegisterAsyncCallback, machNotificationPort, asyncRef, kIOAsyncCalloutCount, &structA, inputSize, &data, &outputSize);
if (ret != kIOReturnSuccess)
{
printf("IOConnectCallAsyncStructMethod failed with error: 0x%08x.\n", ret);
}
}
And when we get data from device we send data back from Driver to Swift app
ivars->mUSBProbeDriverClient->AsyncCompletion(ivars->streamingDataCallback, kIOReturnSuccess, asyncData, 16);
Driver should transfer data to swift app asynchronously when it's provided by USB device so we can not transfer struct synchronously.
Async call back has limitation of 16 of uint64_t only and our application require larger data transfer.
The logical way to transfer data using a memory buffer and as per Apple documentation they are providing this using IODataQueueDispatchSource. But they have not provided any example or showed how to use this.
How to use fill buffer and use it in swift app using IODataQueueDispatchSource?
Hi,i have been trying out SwiftUI Table and wanted to present a details view when click on Table Row occurs, but I couldn't figure out how to "deselect" row once its been selected, while it may not be what Table was intended for, but I still think this code should be valid. (iPadOS)
struct Person: Identifiable {
let givenName: String
let familyName: String
let emailAddress: String
let id = UUID()
}
private var people = [
Person(givenName: "Juan", familyName: "Chavez", emailAddress: "juanchavez@icloud.com"),
Person(givenName: "Mei", familyName: "Chen", emailAddress: "meichen@icloud.com"),
Person(givenName: "Tom", familyName: "Clark", emailAddress: "tomclark@icloud.com"),
Person(givenName: "Gita", familyName: "Kumar", emailAddress: "gitakumar@icloud.com")
]
@State private var selectedPeople: Person.ID?
@State private var detailsViewPresented: Bool = false
var body: some View {
Table(people, selection: $selectedPeople) {
TableColumn("Given Name", value: \.givenName)
TableColumn("Family Name", value: \.familyName)
TableColumn("E-Mail Address", value: \.emailAddress)
}
.onChange(of: selectedPeople) { selection in
guard selection != nil else {
return
}
detailsViewPresented = true
}
.sheet(isPresented: $detailsViewPresented, onDismiss: {
// Trying to reset the selection
self.selectedPeople = nil
}) {
Text("Person's details")
}
}
Here when I press row, it gets selected and Text is presented, but row still remains selected, and yes, I could just use onTapGesture within row content if I declared TableColumn with explicit content, but it would just be added to that column and would not provide build in selection style.
https://developer.apple.com/documentation/swiftui/table
hey! i have an ipad pro 11’ 2018, and everything was working fine until one day i wasn’t able to connect my apple pencil 2 to my ipad. the pencil itself gets detected it just won’t connect with my ipad. i already tried restarting, unpairing (even since i wasn’t able to pair it) and even restoring my ipad. does anyone have a solution for this?
I'm working on a DriverKit driver. I have it running on macOS, including a very simple client app written in SwiftUI. Everything is working fine there. I've added iPadOS as a destination for the app as demonstrated in the WWDC video on DriverKit for iPadOS. The app builds and runs on my iPad, as expected (after a little work to conditionalize out my use of SystemExtensions.framework for installation on macOS). However, after installing and running the app on an iPad, the driver does not show up in Settings->General, nor in the app-specific settings pane triggered by the inclusion of a settings bundle in the app.
I've confirmed that the dext is indeed being included in the app bundle when built for iPadOS (in MyApp.app/SystemExtensions/com.me.MyApp.MyDriver.dext). I also can see in the build log that there's a validation step for the dext, and that seems to be succeeding.
I don't know why the app isn't being discovered -- or in any case surfaced to the user -- when the app is installed on the iPad. Has anyone faced this problem and solved it? Are there ways to troubleshoot installation/discovery of an embedded DriverKit extensions on iOS? Unlike on macOS, I don't really see any relevant console messages.
Hello so i have a few apps that im getting developed on upwork and i have practically 0 knowledge as far as how anything works as far as computer science type stuff. i just want to know what is the correct procedure as far as letting somebody upload the app to my apple developer account. do i give them my AppleID and password and let them do it and then change my password after they're done? any information would be greatly appreciated. thank you
On iPads after updating to iPadOS 16.4, Safari often "looses" the session cookie provided by PlayFramework: When the browser requests assets (js scripts) or when additional data is fetched by JavaScript, the session cookie is not included in the request.
These secondary requests will redirect through our IAM because no session cookie is present. The IAM redirects back to the original domain with a payload so that the login session can be resumed. A new Set-Cookie header is sent in the response with the new session cookie.
This causes the framework to issue a new CSRF token (that is part of the session cookie) which is different from the old one that was already rendered into a hidden form input. The browser stores this new token and includes it when it POSTs the form. The token in the body of the request is now different from the one in the cookies, causing the CSRF check to fail.
We have tried different devices (Android, Windows, MacBook, and iPads) on different versions. The problem only occurs with Safari on iPad/MacBook running version 16.4, 16.4.1, or 16.5 beta. The problem cannot be reproduced using Chrome on iPad. Furthermore, the problem does not occur with private browsing in Safari.
Some things we ruled out:
Same behaviour on devices managed by MDM and on open devices.
PlayFramework version is now updated to the latest 2.8 version.
Using a separate cookie for the CSRF token (instead of the play session cookie) does not make a difference either.
Modifying the Cache-Control header to cache responses more aggressively or not at all does not help.
Has anyone also experienced this or similar problems?
Im running into an issue with the new ipadOS17 live photo wallpapers feature. I'm trying to convert a video into a live photo using several apps from the app store like IntoLive, VideoToLive. Once these videos are converted to the live photo format and I try to set them as a wallpaper, the wallpaper menu states that the wallpaper is not supported or more clearly it says "Motion from this live photo is not supported as a wallpaper". I've tried reducing the video quality, video length, aspect ratio, and none of those options seem to fix the issue. The only live wallpapers that appear to work are those taken from the iPad camera. I hope this can be fixed since its one of the new major features of iPadOS 17.