Is it possible to write an iOS app or app extension to block an incoming call based on the area code (or some other portion of the incoming call number)?
Post not yet marked as solved
Please help me secure my never ending nightmare...
Post not yet marked as solved
I am currently integrating Unwanted Communication Reporting Extension into the project. Ignoring all the UI issues that I had faced I can say that the extension seems to be doing what it claims.
With that said there is a critical issue which occurs when this app extension is paired with Message Filter Extension. Any SMS filtered by Message Filter Extension will contain invalid sender information when reported via Unwanted Communication Reporting Extension.
When attempting to complete report classificationResponse(for request:ILClassificationRequest) -> ILClassificationResponse method is called returning request containing all the information about the communication. This object contains array of communications, be it calls or messages, with each object containing a sender. For both filtered and non-filtered messages this sender property will return a phone number string, however the problem is that filtered messages will contain "(filtered)" postfix (e.g. "+12345678901(filtered)"). This renders ILClassificationAction.reportJunkAndBlockSender action useless. Sender will be blocked, however the phone number that is actually blocked is incorrect as it contains postfix as part of the number itself. Image attached for more context.
Is there any way to avoid this issue? Removing Message Filter Extension is not an option.
Post not yet marked as solved
I am creating in the application support for the Unwanted Communication Reporting extension. All I found is this guide from Apple: https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_call_spam_reporting and i follow it.
I've done:
Instantiates my ViewController from ILClassificationUIExtensionViewController.
Calls controller’s prepare(for:) method to customize UI.
Create button to notify the system when you have completed gathering information (setting setting isReadyForClassificationResponse property to true.)
Configure classificationResponse(for:) method after pressing Done button.
I want to send a response over the network so I add an associated domain to extension by following this instruction: https://developer.apple.com/documentation/xcode/supporting-associated-domain and advises from interenet.
Create file apple-app-site-association, use classificationreport instead of webcredentials when specifying the domains.
{
"applinks": {
"apps": [],
"details": [
{
"appID": “XXXX.com.project.UnwantedCommunicationExtension",
"paths": ["*"]
}
]
},
"classificationreport": {
"apps": ["XXXX.com.project.UnwantedCommunicationExtension"]
}
}
Add domain to the entitlement:
Specify the network endpoint’s address using the ILClassificationExtensionNetworkReportDestination key in extension’s Info.plist file:
Create test server and sent the apple-app-site-association file to this server.
Debugging and proxying my app, it doesn’t send any requests to the server. I can’t find any information about what request type should be sent, what data type will the server receive. Can anyone help to find information about it? Maybe advice what I did wrong, what settings should be on the server?
Post not yet marked as solved
We are working on a Unwanted Communication Extension and have some doubt about the request timeout and how the system reacts to timeouts or even an error after sending the requests.
Does anyone know anything about these topics?
Post not yet marked as solved
After Beta update 15.2 (19C5026i), Cannot send imbedded photos to Android users. These images are screen shots.
Also, cannot attach screen shots as attachments to this message.
Post not yet marked as solved
Ever since myself and my boyfriend got the new iPhone 13 pro max, we can’t seem to call each other through Apple car play. We can make calls to everyone else even if they have the new phone, but we can’t call each other when calling through car play. The only way it works is if we use face time audio call. Not even Facebook messenger call works!! It’s getting a little frustrating. Does anyone else have this issue and know how to fix it?
we can however make regular phone calls to each other if we aren’t using car play
Post not yet marked as solved
Hi,
I just have seen an issue in my project that the Unwanted Communication Reporting extension sends response over the network connection only ONCE after installing. In the second try, after pressing the Done button, I don't see any request sent to my external server. To send response again, I have to re-install the app.
But using SMS is still ok. Every time I press the Done button, the view used to compose SMS appears.
This is my Info.plist to send response over network connection:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>ILClassificationExtensionNetworkReportDestination</key>
<string>https://example.com/api</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.identitylookup.classification-ui</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).UnwantedCommunicationReportingExtension</string>
</dict>
</dict>
</plist>
The classificationResponse() function is still hit every time I press the Done button, but no request is sent to my external server, except the first try. This is my sample code used to confirm that behavior:
// Provide a classification response for the classification request
override func classificationResponse(for request:ILClassificationRequest) -> ILClassificationResponse {
return ILClassificationResponse.init(action: .reportJunk)
}
In addition, the Message Filtering extension (in same app) is running as expected.
I'm using:
iOS 15
Xcode 13
Any comment is highly appreciated. Thanks.
Post not yet marked as solved
I've added an unwanted communication reporting extension target and rebuilt/re-installed/rebooted but when I go to Settings|Phone|SMS/Call Reporting there's nothing there (apart from None). As a result I can't reporting anything via the call/sms history
If I create a new project as a test with an UCE that does nothing by just simply selecting New Project, then New Target and run that, then that does appear.
But it does not appear when I add the UCE target to my existing app, so there's something about my existing app that is preventing the UCE from appearing. Yet my app is sucesfully already using an action extension, a call kit extension, a notification service extension, and a notification content extension all without problem. So why might a unwanted communication extension cause and issue?
Note that the code for the UCE is unaltered from that that gets created as a template by XCode, so there are no coding/compiling issues etc. All I do is just add the target and then build, yet it doesn't appear in Settings.
Why not?
Post not yet marked as solved
Is there a way to use CallKit on the current service the device is subscribing to, such as ATT? I want to create an app that will block all emergency bypass, since I can’t programmatically turn emergency bypass off.
Post not yet marked as solved
Hi. Is there a way to programmatically allow my iOS app to prevent all calls from making a sound or causing the iPhone to vibrate, other than unselecting Emergency Bypass from each contact? If not, is there any way to temporarily or permanently unselect Emergency Bypass on any given Contact? If not, is there any way of programmatically shutting off the iPhone?
Post not yet marked as solved
If a unwanted communication extension target is created,then the auto-generated template code doesn't work. This can very quickly be demonstrated by:
In Xcode create a new iOS project
In that project create an unwanted communication extension target (I called it cheese so its easy to see in the console)
Add some logging lines to the UnwantedCommunicationReportingExtension code that was created.
Install app to iPhone, and select it in the settings app
Swipe on a call in the call history.
The following lines can be seen in the iPhone console:
Unknown class _TtC6cheese13MainInterface in Interface Builder file.
View controller is not of class ILClassificationUIExtensionViewController
None of the logging lines added to the code are displayed, also the Done button in the presented UI is disabled - but in the code that is generated by the target templete is:
self.extensionContext.isReadyForClassificationResponse = true
Which is supposed to enable the Done button.
In the storyboard that gets created the custom class is set to MainInterface:
How are you supposed to get this stuff working if it doesn't work out of the box? MainInterface isn't being recognized as the view controller class, and in the drop down UnwantedCommunicationReportingExtension doesn't appear.
class UnwantedCommunicationReportingExtension: ILClassificationUIExtensionViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
NSLog("viewDidAppear")
// Notify the system when you have completed gathering information
// from the user and you are ready with a classification response
self.extensionContext.isReadyForClassificationResponse = true
}
// Customize UI based on the classification request before the view is loaded
override func prepare(for classificationRequest: ILClassificationRequest) {
NSLog("prepare")
// Configure your views for the classification request
}
// Provide a classification response for the classification request
override func classificationResponse(for request:ILClassificationRequest) -> ILClassificationResponse {
return ILClassificationResponse(action: .none)
}
}
Post not yet marked as solved
I'm currently using 4 extensions within my app and use a group in combination with UserDefaults.init(suiteName:) to share settings between the extensions and the app.
However I've just tried adding an unwanted communications extension and found that data writing to defaults, in the exact same way as the other extensions, isn't saved.
At first I noticed data written by the UCE wasn't present when the app tried to read it, so performed an experiment and found that while the extension is running, it can write and read data to user defaults, but the next time the extension runs, all that data has gone.
I've tried using the old and now default UserDefaults.synchronize() but it makes no difference.
Why is the UC extension different from every other extension? Is it possible to write and persist data from within it?
let groupName = "group.com.mycompany.appName"
let sharedDefaults = UserDefaults.init(suiteName: groupName)
var theValue = sharedDefaults!.value(forKey: "some key")
NSLog("\(theValue)") // prints nothing, despite the extension having previously run
sharedDefaults!.set("some value", forKey: "some key"))
sharedDefaults!.synchronize()
theValue = sharedDefaults!.value(forKey: "some key")
NSLog("\(theValue)") // prints "some value"
Post not yet marked as solved
We provide a spam reporting app in the iOS app store.
We have discovered spammers are sending MMS with images, videos, and audio files. Spammers are also hiding URLs in the subject line. When users report spam using the iOS spam reporting extension, none of this information gets passed through to the app selected to receive the spam report.
Also, some spammers are using phone banks with iPhones to send iMessages, which are then unreportable except to Apple.
In other words, SMS are reportable, but MMS content and iMessages are not. Just sharing this in the hopes someone at Apple see this message and might fix these loopholes that spammers are exploiting.
I am looking for a way to integrate the emergency services on ios to a third-party app which is made with Flutter. So, instead of manually calling an emergency service by using a flutter package called url_launcher (which is able to send messages, phone calls, and emails), I would like to be able to use the phone's own built-in emergency sos feature instead.
Example of Emergency Service (SOS) on IOS
Use Emergency SOS on your iPhone - Apple Support
When doing some research, I have found two forums on Apple Forums that are asking a similar question as to what I would want to do in my app: -
https://developer.apple.com/forums/thread/689973
https://developer.apple.com/forums/thread/108996
I was also looking into Apple's on the SDKs they have available where I have found SDKs and information on :
CallKit
UIKit
Any help/guidance would be greatly appreciated!
Post not yet marked as solved
I’m looking for ideas here. Is there anyway I can access the record of which calls a user has made. I would like to figure out a way to know which numbers a user uses most. I want to be able to set a default number for each contact in my app that the user uses. Is there so way I can determine what default phone number user would normally call for a contact?
Post not yet marked as solved
We have a situation wherein an iPhone 11 (running iOS 15.4.1) is LTE-attached and registered for VoLTE services but not for SMS over IP (no +g.3gpp.smsip tag in SIP-Register sent by iPhone). In such a case, the iPhone is unable to send user-generated SMS over the NAS interface to the MME. When an SMS is attempted the screen immediately shows a "Not Delivered" message next to the text message. This same issue has been observed with iPhone11 (iOS 15.1) and iPhone XS (iOS 15.4.1).
This issue does not occur if we use an iPhone 12 (running iOS 15.4 or iOS 15.0). With an iPhone 12, the SMS gets delivered correctly to the MME over the NAS interface.
Does anyone know of any issues with iPhone 11 or older iPhone models that causes this behavior please?
iOS 16 is not allowing me to send SMS messages (green bubbles). iMessage works perfectly, SMS does NOT. Anyone else experience this?