Hi,
Where can I get more information on expected behaviour for the liveUpdates() configuration options, .default, .automotiveNavigation, .fitness, .automotive, .otherNavigation?
Looking for expected accuracy, frequency of updates, non/stationary transition, etc.
Thanks
Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
i used ios 18 new feature about custom control widget, but this looks like a bug, look at these pictures, control center list won't show these icons when i used my app for a while, and control center page can show these icons
I’m developing an app for inspections that allows users to develop their own template for inspections. Because of this, my data structure has become more than a little complex (see below).
This structure does allow a great deal in flexibility, through, as users can add groups, rows, and individual fields as needed. For example, users can add a header group, then a row to the header with fields for the Building Number, Unit Number, & Inspection Date.
However, I don’t have an efficient way to sort the inspections by the values in these fields. SwiftData sorting is keypath based, which won’t allow me to sort the inspections based on the values only in fields with specific labels.
As an alternative, I can query for fields with a specific label and do a compactMap to the inspection. But this doesn’t scale well when working with potentially hundreds or thousands of inspections as compactMap takes a lot longer then the query takes. It also doesn’t work well if I want to filter inspections or sort using values in multiple user defined fields.
Models below are greatly simplified to just get the point across. More than happy to provide some additional code if asked when I’m back at my laptop with the source code. (Typing this on my iPad at the moment)
@Model final class Inspection {
// init and other fields
var groups: [Group]?
}
@Model final class Group {
// init and other fields
@Relationship(inverse: \Inspection.groups)
var inspection: Inspection?
var rows: [Row]?
}
@Model final class Row {
// init and other fields
@Relationship(inverse: \Group.rows)
var group: Group?
var fields: [Field]?
}
@Model final class Field {
// init and other fields
var label: String?
var type: FieldType // enum, denoting what type of data this is storing
var stringValue: String?
var boolValue: Bool?
var dateValue: Date?
@Attribute(.externalStorage) var dataValue: Data?
@Relationship(inverse: \Row.fields)
var row: Row?
}
HealthKit tracker Id is the same with another Device, We are using an application to track our health progress and we are trying to connect our HealthKit to monitor our health data (steps and calories) but unfortunately we can't connect to the app (another application) at the same time because two devices is sharing just one health kit tracker ID. Can anyone help me to resolve this issue? Old phone was used by the other person before changing to new phone
Topic:
App & System Services
SubTopic:
Health & Fitness
Hi, I am working on a React Native app and i want to have a latitude longitude of a user in every 15 minutes and want to do something like an api call with it. I want to keep continuing this no matter my app is in background, foreground or in killed state. Is there any way or method through which i can achieve this natively or using React Native?
Hi,
I have a hardware device that asks as an ethernet server.
I need to connect to it using a TCP socket over ethernet.
Problem is, I cannot find an API or example code on how to go about this. I have tried to search through the available network interfaces using AF_LINK (link layer) family but only the wifi shows up (en0), even when the device is connected and the iPhone self-assigns an IP etc.
Extra challenge is, I am using objective C because all of my other code is written that way. I'm happy to add a swift module where that is the only option.
Can someone please point me in the right direction?
I created a local notification as follows:
func scheduleNotification(title: String, subtitle: String = "", date: Date, id: String) {
// Extract the components from the date
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minute = calendar.component(.minute, from: date)
let second = calendar.component(.second, from: date)
// Set the extracted components into DateComponents
var dateComponents = DateComponents()
dateComponents.hour = hour
dateComponents.minute = minute
dateComponents.second = second
let content = UNMutableNotificationContent()
content.title = title
content.subtitle = subtitle
content.sound = UNNotificationSound.default
let action1 = UNNotificationAction(identifier: Constants.NOTIFICATION_ACTION_IDENTIFIER_1.id, title: Constants.NOTIFICATION_ACTION_IDENTIFIER_1.label, options: [])
let action2 = UNNotificationAction(identifier: Constants.NOTIFICATION_ACTION_IDENTIFIER_2.id, title: Constants.NOTIFICATION_ACTION_IDENTIFIER_2.label, options: [])
let category = UNNotificationCategory(identifier: "reminderCategory", actions: [action1, action2], intentIdentifiers: [], options: [])
UNUserNotificationCenter.current().setNotificationCategories([category])
content.categoryIdentifier = "reminderCategory"
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let request = UNNotificationRequest(identifier: id, content: content, trigger: trigger)
// add our notification request
UNUserNotificationCenter.current().add(request)
}
and I also have
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// Handle foreground presentation options
completionHandler([.sound, .badge])
}
but for some reason the notification only shown on the phone. I've made sure that the phone is locked, apple watch is unlocked and also the notification setting in the watch app for this app is set to mirror.
What is the maximum power-per-hour can an iPhone provide for an accessory connected to the iPhone to its Lightning port?
Hello,
I am facing with misunderstanding how to read usb device properties correctly.
The notification 'kIOTerminatedNotification' is delivered after an IOService has been terminated. Can I use IORegistryEntryCreateCFProperties() to get properties of terminated device?
I am asking because I/O Registry is a dynamic database that captures the connections of all driver and nub objects currently active. Howerver, can we say that terminated device is still active?
If IORegistryEntryCreateCFProperties() can not be used, are there any other way? (e.g. using Device Interface)
Thank you in advance!
Development environment: Electron 30.2.0
Run-time configuration: macOS 14.5 (23F79)
DESCRIPTION OF PROBLEM
I have one keyboard which will wake up the Mac OS from sleep when sending command to it at the time system starting to sleep. But this keyboard will not have such problem on Window OS, I don't know why sending command to that keyboard will wake up the Mac OS system from sleep.
Does anyone know from a hardware or software point of view, what kind of usb keyboard operation will cause the macos system to wake up? Or can someone give us guidance, how to debug and solve the usb keyboard caused by the wake up system problem on Mac OS system?
STEPS TO REPRODUCE Sending command to that keyboard when the system start to sleep
Topic:
App & System Services
SubTopic:
Hardware
i’m on an iphone 15 pro max
18.1 beta. I have apple ai and no matter what i ask it i am unable to see the apple ai response as it is always blurred out?
if i click copy and paste into a text or notepad the answer shows up so the ai is working and answering my commands it just doesnt show on the screen…
if i put that i want the answers read to me it’ll read it but the response will still be blurred ?
please someone help
Topic:
App & System Services
SubTopic:
Notifications
For transit passes I have notice they have the "Latest Transactions" under the card image. Is there a way to support this in other types of Passes such as a Store card?
Topic:
App & System Services
SubTopic:
Apple Pay
Hi,
we had a case where one of our users wanted us to stop renewing his subscription in our app since he was unable to do it himself.
Is there a way for us to stop the auto renewal?
Kind regards
Ondřej Leitmančík
Hello ApplePay Support,
I am integrating apple pay support on the following page but getting error. I have attached code files and video also about debug that code with different response print. Please check it and let me know where is issue.
ApplePay Page:
https://payment.bestgoodstudio.com/uk/pay/
JS Code:
$(document).ready(function() {
function setupApplePayButton() {
var applePayButton = $('#apple-pay-button');
if (applePayButton.length) {
applePayButton.on('click', function() {
initiateApplePayPayment();
});
}
}
async function initiateApplePayPayment() {
if (!window.ApplePaySession) {
alert('Apple Pay is not supported in this browser/environment.');
console.error('Apple Pay is not supported in this browser/environment.');
return;
}
var request = {
countryCode: 'GB',
currencyCode: 'EUR',
supportedNetworks: ['visa', 'masterCard', 'amex'],
merchantCapabilities: ['supports3DS', 'supportsEMV', 'supportsCredit', 'supportsDebit'],
total: {
label: 'Elitelab Pte Ltd',
amount: '2.50'
}
};
var session = new ApplePaySession(3, request);
session.onvalidatemerchant = async function(event) {
const validationURL = event.validationURL;
alert("Validation URL received: " + validationURL);
try {
const response = await fetch('https://payment.bestgoodstudio.com/uk/pay/apple_pay_validation.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ validationURL: validationURL })
});
const responseBody = await response.text(); // Get raw text to print whole response
alert("Validation Response (raw): " + responseBody); // Print raw response in alert
if (response.ok) {
const responseData = JSON.parse(responseBody); // Parse it if valid JSON
alert('Validation Response (parsed): ' + JSON.stringify(responseData));
console.log('Merchant Validation Data:', responseData);
if (session) {
session.completeMerchantValidation(responseData);
alert('Merchant validation completed.');
}
} else {
alert("Merchant Validation failed. HTTP Status: " + response.status);
session.abort(); // Abort session if validation fails
}
} catch (e) {
alert('Error during Merchant Validation: ' + e.message);
console.error('Merchant validation error:', e);
session.abort(); // Abort session on error
}
};
session.onpaymentauthorized = function(event) {
var payment = event.payment;
var paymentToken = payment.token.paymentData;
alert("Payment authorized. Payment Data: " + JSON.stringify(payment));
console.log('Payment Authorized:', payment);
processApplePayPayment(payment, function(success) {
if (success) {
session.completePayment(ApplePaySession.STATUS_SUCCESS);
alert('Payment completed successfully.');
} else {
session.completePayment(ApplePaySession.STATUS_FAILURE);
alert('Payment failed.');
}
});
};
session.oncancel = function(event) {
alert("Session canceled: " + JSON.stringify(event));
console.log("Session canceled:", event);
};
session.oncomplete = function(event) {
alert("Session complete: " + JSON.stringify(event));
console.log("Session complete:", event);
};
session.begin();
}
function processApplePayPayment(payment, callback) {
var postData = {
paymentData: payment.token.paymentData,
billingContact: payment.billingContact,
shippingContact: payment.shippingContact
};
$.ajax({
url: 'process_apple_pay.php',
method: 'POST',
data: JSON.stringify(postData),
contentType: 'application/json',
success: function(response) {
alert("Payment Processing Response: " + JSON.stringify(response));
console.log("Payment Processing Response:", response);
callback(response.success);
},
error: function(error) {
alert('Error processing payment: ' + JSON.stringify(error));
console.error('Error processing payment:', error);
callback(false);
}
});
}
setupApplePayButton();
});
PHP Code:
Topic:
App & System Services
SubTopic:
Apple Pay
I have been experiencing a consistent problem when connecting to a bluetooth device (Speaker, Vehicle, Etc.) where the music cuts-out every time I receive a notification or my Iphone screen turns on or off.
This never happened before the update. I have tried restarting, downgrading to previous IOS versions and reupdating to the latest.
No luck, unfortunately.
I thought this might be due to the devices, but this happens when playing music through my device as well. I have checked the notification settings and haven't found anything that fixes this problem.
Any assistance would be much appreciated.
Our team want to transfer money to card with Apple Pay. I am iOS developer. I have access Admin. I created Merchant ID. I added domain. Our backend team uploaded .txt file to database. Url is working, you can see .txt file content when open it. But when I press verify I get error as following:
Domain verification failed. Unable to access verification file on server. Confirm that the file is in the correct location, proxies and redirects are not enabled, and the documented Apple Domain Verification IP addresses can access your server.
Please, help to fix this problem.
Topic:
App & System Services
SubTopic:
Apple Pay
Am developing an iOS App, which uses a ZipFoundation wrapper around Compression. In XCode, have exported a document type with extension '.MU' in the Info.plist.
On iPhone, when attempting to open archive called: 'Snapshot-test.mu'
can OPEN as a mobile email attachment
but FAILED via Files App referring to "iCloud Drive/Desktop"
Here are the respective URLS
"file:///private/var/mobile/Containers/Data/Application/<UniqueID>/Documents/Inbox/Snapshot-test.mu"
"file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/Desktop/Snapshot-test1.mu"
Two questions:
Is it possible to grant access to files residing remotely in iCloud?
Is "iCloud Drive/Desktop" unique, whereas other iCloud locations would be OK?
Hi all
There is a weather alert for Manhattan New York (Coastal Flood Advisory) all weather apps give this info but Weatherkit doesn't include this alert data. Weatherkit api team improved my skill for testing apps with creating random issue...
I have 2 subscriptions, monthly and year
first:DID_CHANGE_RENEWAL_PREF + DOWNGRADE:
Customer downgrades a subscription within the same subscription group;
The current subscribe is year;if i change to month;when the subscribe year was expire,Automatic renewal will change to month
second:DID_CHANGE_RENEWAL_PREF+UPGRADE:
Customer upgrades a subscription within the same subscription group.
The current subscribe is month;if i change to year;I need to pay for the annual subscription immediately;and The subscription immediately switches to the annual
third:DID_CHANGE_RENEWAL_PREF subtype is None
Customer reverts to the previous subscription, effectively canceling their downgrade.
what this mean?
This is Test Env,month is five minutes;year is one hour
①My current subscription is an annual,
startTime:2024-10-02 15:04:58 ,expireTime:2024-10-02 16:04:58
②first DOWNGRADE to month,at 2024-10-02 15:14:16
②after 38 minutes,I change to the annual subscribe;at 2024-10-02 15:52:00
in the end,the Notification purchaseDate 2024-10-02 15:52:00;expiresDate 2024-10-02 16:52:00;
So
When I get NotificationType=DID_CHANGE_RENEWAL_PREF,NotificationSubType=None,Do I need to create a new subscription for the users?
Is it the latest notice of purchaseDate and expiresDate, for a year?
The appleNotification Payload as follows:
JWSTransactionDecodedPayload(
originalTransactionId='2000000731045285', transactionId='2000000731088945',
webOrderLineItemId='2000000076096676',
bundleId='app.xxxx',
productId='com.xxxx.365',
subscriptionGroupIdentifier='21514251',
purchaseDate=1727855520000, 2024-10-02 15:52:00
originalPurchaseDate=1727852699000, 2024-10-02 15:04:59
expiresDate=1727859120000, 2024-10-02 16:52:00
quantity=1,
type=<Type.AUTO_RENEWABLE_SUBSCRIPTION: 'Auto-Renewable Subscription'>, rawType='Auto-Renewable Subscription', appAccountToken='fa37b7a2-2b0b-43cb-8fda-a1fb21168efe', inAppOwnershipType=<InAppOwnershipType.PURCHASED: 'PURCHASED'>, rawInAppOwnershipType='PURCHASED',
signedDate=1727855526632, 2024-10-02 15:52:06
revocationReason=None,
rawRevocationReason=None,
revocationDate=None,
isUpgraded=None,
offerType=None,
rawOfferType=None,
offerIdentifier=None,
environment=<Environment.SANDBOX: 'Sandbox'>,
rawEnvironment='Sandbox',
storefront='CAN',
storefrontId='143455',
transactionReason=<TransactionReason.PURCHASE: 'PURCHASE'>, rawTransactionReason='PURCHASE',
currency='CAD',
price=14990,
offerDiscountType=None,
rawOfferDiscountType=None)
JWSRenewalInfoDecodedPayload(
expirationIntent=None,
rawExpirationIntent=None,
originalTransactionId='2000000731045285', autoRenewProductId='com.xxxx.365',
productId='com.xxxx.365',
autoRenewStatus=<AutoRenewStatus.ON: 1>,
rawAutoRenewStatus=1,
isInBillingRetryPeriod=None,
priceIncreaseStatus=None,
rawPriceIncreaseStatus=None,
gracePeriodExpiresDate=None,
offerType=None,
rawOfferType=None,
offerIdentifier=None,
signedDate=1727855526632, 2024-10-02 15:52:06
environment=<Environment.SANDBOX: 'Sandbox'>,
rawEnvironment='Sandbox',
recentSubscriptionStartDate=1727852698000, 2024-10-02 15:04:58
renewalDate=1727859120000, 2024-10-02 16:52:00
currency='CAD',
renewalPrice=14990,
offerDiscountType=None,
rawOfferDiscountType=None,
eligibleWinBackOfferIds=None)
Topic:
App & System Services
SubTopic:
StoreKit
Hi everyone,
I'm currently working on testing in-app purchases for my app, and I'm having issues with logging into a sandbox account on my iPhone.
Here's the situation:
I created a sandbox account via App Store Connect.
I signed out of my regular Apple ID from the App Store and attempted to log in with my sandbox account during an in-app purchase.
I receive a verification code on my phone, and it seems like the login is working. However, after entering the code, I keep getting redirected back to the "Sign in with Apple Account" screen. It doesn’t fully log me in.
I’ve tried resetting network settings, restarting the device, and even creating a new sandbox account, but nothing seems to work.
I'm running the app through Expo prebuild and attempting to test purchases, but without being able to log into the sandbox environment, I can’t move forward.
Has anyone encountered this issue before or know how to fix it? Any help would be greatly appreciated!
Thanks!