Greetings!
I am currently working on Message Filtering iOS App extension: https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_mms_message_filtering
We are using the approach to defer the query to an associated server: https://developer.apple.com/documentation/sms_and_call_reporting/ilmessagefilterextensioncontext/2880240-deferqueryrequesttonetwork
Although iOS ensures that no other app extension can make these requests to the server via associated domains feature, the security team is concerned a lot about creating an endpoint which has no client-server authentication at all (OAuth or bearer token authentication). It means that the endpoint may potentially be used by some thirdparty scripts, apps, etc, and we won't be able to distinguish this from valid clients on the backend.
I am aware of the note in documentation saying
For privacy reasons, the system handles all communication with your associated server; your Message Filter app extension can’t access the network directly.
Your app extension also can’t write data to containers shared with the containing app.
But maybe there is a way to add any client-server network authentication to requests made by deferring the message filter query to our server?
Thanks in advance,
Konstantin
Extensions
RSS for tagGive users access to your app's functionality and content throughout iOS and macOS using extensions.
Posts under Extensions tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Every time I try to update my newest sticker pack in Xcode, It gives me this error "warning: The CFBundleShortVersionString of an app extension ('1.2') must match that of its containing parent app ('1.0')."
Hi
I'm a total novice on this stuff so please know that in advance. Won't go into details but my former employer has repeatedly hacked into my network, email etc. It's being dealt with legally.
That said you can imagine my paranoia all the time and I never know is okay or what is suspicious. I find it really hard to get actual information on google etc., so I'm turning to you far more experienced and knowledgeable mac people.
I stumbled on the above looking for something in terminal. It's obviously in the applications software section. Falls under Users/me/Library/application scripts/group.is.workflow.my.app
The timing of the installation is exactly when there was a certain event.
Also, on all of my files, I have to remove Staff from accessing. I don't know what that's about but if anyone has insight let me know. Please see attached. Thank you!!
Isn't it possible to use the same widgetkit extension for both iOS and WatchOS?
In the WWDC's BackyarBirds project from Apple, I can see the widget extension is added to both the multiplatform (including iOS) and the watch targets. I can also see that the SwiftUI code even uses macros to check which platform the code is running on.
However, I'm having several issues with adding the same extension to both targets. When I add it to the watch target, I get a build error that I'm trying to embed an application that also builds for iOS and that is not allowed for the watch app.
Not sure if any code here is helpful, but this is my widget UI code:
struct AkvaWidget: Widget {
private let kind = "Akva Widget"
var families: [WidgetFamily] {
#if os(iOS)
return [.accessoryCircular, .accessoryRectangular, .systemSmall]
#elseif os(watchOS)
return [.accessoryCircular, .accessoryRectangular, .accessoryInline, .accessoryCorner]
#endif
}
var body: some WidgetConfiguration {
StaticConfiguration(
kind: kind,
provider: AkvaSnapshotTimelineProvider()
) { entry in
AkvaWidgetView(entry: entry)
}
.configurationDisplayName("Akva")
.description("Keep track of your water intake.")
.supportedFamilies(families)
}
}
I have a text based action for iPhone and Mac Catalyst I am developing in Xcode 14.3.1 on macOS 13.4.1.
I have the container app, an action and an AppGroup defined.
I have confirmed that I can read the necessary shared defaults when the action launches.
At this point the UI for the action is a simple textview in which I hope to display a modified version of the text passed to the action in the NSExtensionItems.
I am not using a simulator. I am running the action directly using Xcode.
What is happening is that the ActionViewController viewDidLoad runs but no visible window opens.
In the console I see this as the action launches:
2023-07-05 18:27:23.692277-0700 XYZ[4634:279295] [ViewBridge] ViewBridge attempted to look up a hosted window with identifier 8E816BD5-67D3-402D-ADEB-AC59EDFA1F3B, but it was never registered.
2023-07-05 18:27:23.692408-0700 XYZ[4634:279295] [WindowHosting] UIScene property of UINSSceneViewController was accessed before it was set.
....
The last line above is repeated 12 times....
Any helpful ideas would be deeply appreciated!
Steve
My current app's version is 3.0 and build 4 (which i set in the identify tab as shown in the picture below). When I created a new Widget Extension and when I build I get this warning: The CFBundleVersion of an app extension ('1') must match that of its containing parent app ('4').
I know for a fact that this is the issue with the build and version number not being the same as my app. But I just don't see a place where I can change it in the Xcode tabs instead of manually changing it in my info.plist
I remember seeing and using the option to change the build and version numbers for widget extensions in Xcode 13, 14.
This how it looks for the iOS app:
This how it looks for the Widget Extension:
Hoping this is just a bug!
We have an app where the notification service extension works well most of the time. However, sometimes we have noticed that the extension completely stops working even when the notification is sent successfully via the APNS server in production. We do not see even the log from the didReceive() function in that case. The only way we can get the extension working again is after restarting the iPhone.
Trying to understand when this might happen?
Is it something that is throttled by iOS?
Would it happen when the device memory is low or the app is using too much memory?
We have seen the extension crash sometimes due to hitting memory limits, however, the extension process is spawned again when a new notification comes in.
Any kind of help or guidance would be greatly appreciated.
Thanks
We have setup acknowledgment API calls in the notification service extension processing to be notified when the notifications reach the device. So based on that we know how often the devices stop responding with the ACK to sent notifications. It happens seldom with some users and we have to ask them to restart their device to get the extension functional again.
I have an application that filters messages using ILMessageFilterExtension.
I have app groups set up and sertificates/profiles.
The filtering worked a couple of months ago, but recently I noticed that I can't debug the extension( ILMessageFilterExtension's init() didn't called). When I connect to the "Messages" process, I get the following errors. What could be the problem?
2023-07-17 19:52:31.450808+0200 MobileSMS[2344:373404] [ServerBag] Checked bag access permission -- allowed? YES {self: <IDSCourierServerBag: 0x2816a0240>, hasMachAccess: YES, hasEntitlements: YES}
2023-07-17 19:52:31.498361+0200 MobileSMS[2344:373407] [AppConfiguration] [com.apple.MobileSMS:F297CBA2-105E-4D38-9EB1-BB09500B39C7] Error when getting current app configuration for action identifier ConversationListFocusFilterAction, error='Error Domain=DNDErrorDomain Code=1007 "No current action is available. Supply the caller with the default." UserInfo={NSLocalizedDescription=No current action is available. Supply the caller with the default.}'
2023-07-17 19:52:31.545894+0200 MobileSMS[2344:373351] [ViewController] Calling -viewWillAppear: directly on a view controller is not supported, and may result in out-of-order callbacks and other inconsistent behavior. Use the -beginAppearanceTransition:animated: and -endAppearanceTransition APIs on UIViewController to manually drive appearance callbacks instead. Make a symbolic breakpoint at UIViewControllerAlertForAppearanceCallbackMisuse to catch this in the debugger. View controller: <CKSearchViewController: 0x979059000>
2023-07-17 19:52:31.550596+0200 MobileSMS[2344:373351] [CompositionalLayout] Invalid absolute dimension, must be > 0.0. NOTE: This will be a hard-assert soon, please update your call site.
2023-07-17 19:52:31.550619+0200 MobileSMS[2344:373351] [CompositionalLayout] Invalid absolute dimension, must be > 0.0. NOTE: This will be a hard-assert soon, please update your call site.
2023-07-17 19:52:31.550632+0200 MobileSMS[2344:373351] [CompositionalLayout] Invalid absolute dimension, must be > 0.0. NOTE: This will be a hard-assert soon, please update your call site.
2023-07-17 19:52:31.550642+0200 MobileSMS[2344:373351] [CompositionalLayout] Invalid absolute dimension, must be > 0.0. NOTE: This will be a hard-assert soon, please update your call site.
2023-07-17 19:52:31.614473+0200 MobileSMS[2344:373408] [PAAccessLogger] Failed to log access with error: access=<PATCCAccess 0x2800b90e0> accessor:<<PAApplication 0x2800a8370 identifierType:inProcess assumedIdentity:(null)>> identifier:EECF4598-342E-4DC7-9BC4-277B1E7B294F kind:intervalEvent timestampAdjustment:0 visibilityState:0 assetIdentifierCount:0 tccService:kTCCServiceAddressBook, error=Error Domain=NSCocoaErrorDomain Code=4097 "connection to service with pid 1317 named com.apple.privacyaccountingd" UserInfo={NSDebugDescription=connection to service with pid 1317 named com.apple.privacyaccountingd}
2023-07-17 19:52:31.618769+0200 MobileSMS[2344:373351] [Warning] Could not determine if com.apple.messages.browser.MorePlugin is a recent or favorite!
2023-07-17 19:52:31.620785+0200 MobileSMS[2344:373351] [Warning] Could not determine if com.apple.messages.browser.MorePlugin is a recent or favorite!
2023-07-17 19:52:31.630814+0200 MobileSMS[2344:373351] [Warning] Could not determine if com.apple.messages.browser.MorePlugin is a recent or favorite!
2023-07-17 19:52:31.803429+0200 MobileSMS[2344:373404] [General] Failed to get any results from PersonalizationPortrait. (null)
I'm trying to implement the Location Push Service Extension in my app.I have added location push service extension.
When I call startMonitoringLocationPushes(completion:) method, I also got the APNs token as data. When I send the location push with this APNs token, it successfully delivered to the target device. But none of these below methods has been called in the app:
didReceiveLocationPushPayload
serviceExtensionWillTerminate
locationManager( .... didUpdateLocations ...)
locationManager(... didFailWithError ....)
So, I think location push notification is not awaking the location push service extension. I am using development for APS environment. May I know am I missing anything in XCode configuration?
I'm trying to authenticate with a OAuth2.0 service when my MessagesExtension app loads. I see that one of the parameters the service requires is a redirect_uri, which will pass back an authorization code to my application through the redirect callback. However, I'm unable to provide a redirect_uri that will invoke my application since MessagesExtension applications do not have an appDelegate. Is it just not possible to authenticate with services requiring a redirect_uri with a MessagesExtension application?
We have a few widgets with configurations enabled. These have been loading/refreshing just fine on iOS 15.x devices across all configurations.
However, on iOS 16.x devices only a few configurations load while others just show a skeleton view.
Also, we did verify on simulators for all the configurations on iOS 15.x, 17, and widgets load as expected on them expect for 16.x simulators.
I have read a few articles where people have been experiencing simialr issues with widgets on iOS 16.x - https://piunikaweb.com/2023/03/10/ios-16-lock-screen-weather-widget-not-updating-or-blank-issue/
Any help or suggestions to resolve this?
I use the Replaykit extension to recode the screen and transform the CMSampleBufferRef to CVPixelBufferRef, then add the video frame like this:
let rotation = RTCVideoRotation(rawValue: videoRotation)
let rtcPixlBuffer = RTCCVPixelBuffer(pixelBuffer: imageBuffer)
let rtcVideoFrame = RTCVideoFrame(buffer: rtcPixlBuffer,
rotation: rotation ?? ._0,
timeStampNs: Int64(timeStampNs))
webRTCClient.addVideoCapture(videoFrame: rtcVideoFrame)
}
func addVideoCapture(videoFrame: RTCVideoFrame) {
videoSource?.capturer(videoCapturer!, didCapture: videoFrame)
}
It works ok on iOS 15, but when I test it on iOS 16, I scroll the page on the sender, and I find the picture is choppy on the receiver. Does anyone know how to resolve this issue?
I am working on a project where it needs to implement wallet extension to add cards from Apple wallet. I am stuck in the flow where app is not getting displayed in wallet while trying to add. Any sample implementation available? Any help would be much appreciated
I have my own iOS app that works great. But I needed to connect Location Push Service Extension to this application.
The steps I performed: I got the entitlement for location push type, created certificates, profiles for this service, then I implemented this service by connecting all profiles to it and adding to .entitlements com.apple.developer.location.push. In the AppDelegate of my application, I create a service that has a CLLocationManager in it, which monitors the departure of the application to the background and immediately calls the startMonitoringLocationPushes method. startMonitoringLocationPushes works fine and gives me APN token. But when I try to send a notification to the device, the service is not even called.
The push structure looks like this:
payload: {},
compiled: false,
aps: {},
expiry: -1,
priority: 10,
topic: 'ru.profsoft.alertonDev.location-query',
pushType: 'location'
}
[headers] {
'apns-topic': '<MainAppID>.location-query',
'apns-push-type': 'location'
}
I use a small service on Node JS to send push notification to APN and it successfully delivers them, and the Apple console also successfully delivers them
But when device is successfully gets any location push, service is not calling.
I started to use Debug -> Attach to process by PID or Name and got this error:
Thread 1: EXC_RESOURCE (RESOURCE_TYPE_MEMORY: high watermark memory limit exceeded) (limit=24 MB)
But my LocationPushService contains only autogenerated code without any extra implementation.
Also I checked Console and found these errors when I delivered push to the device:
This is first error's description:
Failed to get LSApplicationRecord for <RBSLaunchRequest| xpcservice<ru.profsoft.alertonDev.AlertonLocationPushServiceDev([osservice<com.apple.locationpushd>:201])>; "Launching extension ru.profsoft.alertonDev.AlertonLocationPushServiceDev(BB972E40-8E19-48D5-B05D-13A5D9D7005B) for host 201"> with error Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=1538, _LSFunction=runEvaluator}
Can anybody help with this?
I am working on a banking application (includes iPhone and iPad) which includes add to wallet feature.
During the implementation I saw one document it is mentioned that for iPad app, the app must be extended to support Apple pay functionality.
Details from document says "Card Issuers with an iOS mobile banking app must support Card Issuer iOS Wallet extension functionality to enable Card issuer mobile app customers to provision new cards directly from the iOS Wallet app with all eligible Apple iOS devices. If the Card Issuer has a dedicated iPad App, that App must be extended to support Apple Pay functionality. "
Is wallet extension implementation required for Apple pay to work in iPhone and iPad?
Is wallet extension a mandatory implementation for Add to Apple Wallet feature to work and approved by Apple?
I am little confused in this.
Anyone who integrated Apple pay or done add to Apple Wallet feature recently without wallet extension faced any rejection?
Any help would be much appreciated.
I'm trying to modify a ShieldConfigurationExtension, but am having trouble adding an icon. I have tried directly adding a png to the ShieldConfiguration extension folder and creating a UIImage from it, but it doesn't seem to work. Am I working with images within an extension properly?
This code displays the default configuration
override func configuration(shielding application: Application, in category: ActivityCategory) -> ShieldConfiguration {
// Customize the shield as needed for applications shielded because of their category.
let image = UIImage(named: "icon")
return ShieldConfiguration( icon: image)
}
This code properly displays a customized configuration
return ShieldConfiguration( title: ShieldConfiguration.Label(text: "test", color: .white))
Hi all,
So im develop a keyboard extension to have it custom for my distinct host app. The keyboard are connect with hardware barcode scanner.
I have problem to auto 'send' the form when the barcode read.
So, if I have other string (barcode) combine with the ("\r"), this will not trigger the auto send.
func performBarcodeScan(barcode: String, scanner: String) {
textDocumentProxy.insertText(barcode+"\r")
}
But, I tried with this situation where i already type some string input in the field and have only ("\r") as below, that will work
func performBarcodeScan(barcode: String, scanner: String) {
textDocumentProxy.insertText("\r")
}
have the insertText twice to separate the string also not work.
I hope anyone can help with this as i have been stuck forrr a longgggg time.
Thanks in advanced!
Autorepeat key works in Notes for iPads, iPhone , but need code in Xcode for an iOS application using buttons as text input and text editing. Could not find any code.
Thanks for replying
Charlie
Hi,
I'm trying to use UNNotificationContentExtension for a SwiftUI Mac application, and I'm unable to get it to run - the default notification type is displayed instead.
I'm using Mac OS 12.6.7 and Xcode 14.2
To reproduce, create a new SwiftUI Mac application, and replace the contents of the ContentView body VStack with the following:
Button("Request Permission") {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in
if success {
print("All set!")
} else if let error = error {
print(error.localizedDescription)
}
}
let notificationCategory = UNNotificationCategory(identifier: "test", actions: [], intentIdentifiers: [])
UNUserNotificationCenter.current().setNotificationCategories([notificationCategory])
}
Button("Schedule Notification") {
let content = UNMutableNotificationContent()
content.title = "Testing"
content.categoryIdentifier = "test"
content.sound = UNNotificationSound.default
// show this notification five seconds from now
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 0.1, repeats: false)
// choose a random identifier
let request = UNNotificationRequest(identifier: "myApp", content: content, trigger: trigger)
// add our notification request
UNUserNotificationCenter.current().add(request)
}
Then do New->Target->Notification Content Extension.
In the extension Info.plist, set UNNotificationExtensionCategory to 'test'.
My understanding was that this should be enough to get the extension to load, but it doesn't seem to be. Am I missing something?
Thanks in advance!
File Sharing: ‘Open in App’ option is not available along with Share extension from iOS 16 and above
Hi,
My iOS app used to import say abc.xyz file using ‘Open in App’ option which is achieved using Uniform Type Identifiers(UTI). This abc.xyz file was attached and shared via an email client.
[Note: My app also has Share extension to import other file type]
Upto iOS 15, When I try to import this file to my app I can see 2 options(Expected behaviour):
Open in app
Share with app
But from iOS 16 and above(latest iOS 17 beta 4), I can only see below option,
Share with app
To debug further, I created a project(iOS 17 beta 4) and added UTI support for abc.xyz file format(Same as above).
When the same file is attached in email client and try to import to app, I can see below option,
Copy to app
When this file is saved locally(on device) and later try to import from the Files folder, I can see below option,
Open in app
But the moment I add Share extension(Which is the requirement of my app), the only option to import file is
Share with app
From the above observation my queries are,
Why there is behavioural change from iOS 16 and above when showing the options to import file ?
Has “Open in app” option removed when Share extension is present in app from iOS 16 and above ?
Does that mean when Share extension target is added in project the only way to import files is via Share extension from iOS 16 and above ?
Or can you please suggest if any extra parameters to be added to info.plist from iOS 16 and above to support both options i.e., Open in app & Share with app ?