IOS 12 Unwanted communication Reporting Extension Working on Phone but not on Messages app - ios

I have been trying to make the new iOS extension Unwanted Communication Reporting work. Currently I couldn't find any good walk-through tutorial or code-sample to make it work. Above that by just firing up a new project with this extension and building it shows me the option of reporting in the Phone App but not on the Messages app, Moreover, the option to enable it only appears in phone app but it says "sms/phone" so I think this should work for both of them.
I know its in beta right now but just want to know if anyone had any luck with it. Also, There is no code to share as its just the boiler plate that comes with the new project.

This might have been a personal issue. I reset the whole phone and now I can see the options to report message. Apple might have fixed it in their latest iOS build or it might have just been my device issue.

Apple's developer site specifies ”SMS and call spam reporting," which is an app extension that you will have the option of turning on or off.
You may enable an Unwanted Communication extension in the Settings app. I am not sure if Apple will utilize this but i know for android - screen turns red when such spam calls come in, also caller id notes that but currently apple seems to have found a middle ground.
The following worked for me, you can try:
Remove command definition for this in Plist file.
Delete the Target in project (you can delete code folder).

Related

Why does my iOS app show it needs "Local Network" permission?

In the iOS Settings app, my app has a list of permissions it needs. It also has one that it doesn't - Local Network.
I disabled that and it runs fine, so I know it really doesn't need it (besides the fact that I never use it).
So how did iOS get the idea that my app needs it?
(The app is built with Xamarin.iOS if that makes a difference.)
With no related change to the project, that disappeared.
I assume it was something in Xamarin.iOS and was removed with some update.
So if you're facing the same issue, perhaps the latest update might help you.
Assuming that you know your code and that there is nothing relevant there, then you have used some package that causes this. There is no third possibility.

Trouble compiling for iOS 11.1 with Xamarin (Visual Studio)

There is not much of a point in posting actual code here, because we're talking about 7 different apps.
All of these apps have been up on the Apple Store and running fine. Until the new iOS 11.1 came out. Now I am being forced to update all of those apps, and rearrange the screen to allow for the new layout of the iPhone X.
Now all of this seems mostly reasonable, if not ridiculous for them changing their own design standard. But the real problem is that I went through all of that. Upgraded Xamarin (Visual Studio), and packages, and Xcode, and the Simulators, AND my Mac system. Everything is up to speed. The apps compile and test fine on any simulator I install them on.
The only change to the code is moving stuff around on the screen. Well, that, and I now need to drop support for anything i386. It all has to be x86_64 now.
From what I can tell, that is a difference from 32-bit to 64-bit. And that change is a dropdown menu choice in the Project Options. In any case, there is no indication at all that there is anything wrong with these apps at all.
So with all of this, I submit my apps for approval, and every single one of them gets rejected because "The app crashes on startup." And they kindly attach a log file showing what went wrong.
Now, I know I can simply scour those logs, for all 7 apps... The log files need to be fed into some other program that can decipher them, because they are not human-readable. Which is just annoying...
What I'm hoping is that someone can save me some trouble and explain what they changed in their systems that is not being caught by the compilers or the simulators.
Any help would be hot.
I am posting my own answer because I have not seen one anywhere that addresses what I have found to have worked. So I am providing this information for the next small developer, like myself, can get some useful answers to questions where Apple and Xamarin are simply NO HELP at all.
Xamarin does provide a page that essentially says, "get your app ready for iOS 11." The most useful part of this is where it shows you how to remove any linkage to anything 32-bit.
Architecture changes
This is mostly helpful. And I thought that once that was done, I'd be all set. There are 2 other things they completely fail to mention:
- You must set your target device to 11.1. You cannot have it set for 9.0. That will make the app crash on an 11.1 system.
- You must make a change in the manual code editing (source) section of the info.plst file. Why this is not done automatically, I cannot say. You must add an entry to the "Required Device Capabilities" section for "arm64". You also must remove the one for arm7.
Failure to do these two things, even after making their suggested changes will cause the app to crash on iOS 11.1 devices.
If you think I'm having a bit of an attitude problem about this, yes, I am. And I will not apologize for it.
It is absurd for Apple to change their design specs, give us very little time to make changes, and then not provide the absolutely essential information to actually make the changes. I blame Xamarin too. For the exact same reasons.
It is also absurd to totally deprecate all the testing devices I have, and then ask, "why don't you test on an actual device?" Because I cannot afford a new $1000 phone for the sake of testing apps that barely make me any money anyway. That's why.
And people wonder why I think it's a pain in the bum to develop for iOS devices.
1) Some of the frameworks that your app use may use libraries, that does not work correctly on iPhone. The reason for that is that when you compile your project on the simulator, is still compile it for a PC architecture, not a mobile one. And if there are any differences, only a real device could tell you about them.
2) I would suggest you to use this method to symbolicate crash reports from Apple. That at least should give you some clue. In summary, what you need to do is after you compile your app, you need to save a few files (.dSYM and .ipa) Then when apple send you back a report, you would be able to symbolicate it into human readable. You can find more info on how to do it here: https://developer.xamarin.com/guides/ios/troubleshooting/questions/symbolicate-ios-crash/

Refresh Associated Domains iOS

I have universal links working in my app.
I enable the Associated Domains, upload the apple-app-site-association file, and run the app. All works as expected, the domains are registered (I'm watching via the OS log in Xcode), and I can use Open In from the Notes app to test the links.
HOWEVER. If I reboot the device (in my case iPad, iOS 10) it ceases to work. It appears to me as if the associated domains are getting un-registered/forgotten when the device shuts down.
Is there a way to refresh the associated domains on app launch?
I'm already using Branch.io, and this affects those links as well as straight universal links.
I'm guessing this is an Apple bug, and will file a radar with them. However, any workarounds would be appreciated.
We had not seen this issue at Branch when Alex wrote his comment above. We have since confirmed that this is indeed an Apple bug.
Current documentation states you need to uninstall the app every time you update Associated Domains list to apply the effect immediately.
https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app

iCloud Entitlement to app?

So, I've registered for Apple's Developer program just yesterday and I've added my details in Xcode.
I'm just playing around with it and following this tutorial as a learning curve if you wish (as I haven't really played much with libraries like CloudKit, Location Manager and so on):
https://thinkster.io/swift-ios-app/#saving-our-data-using-cloudkit-enabling-cloud-kit-in-our-app
If you scroll a bit, you will see that it requires to sign in with your developer's account in order to activate iCloud.
That's cool, but I get 2 errors that I can't figure out how to solve (and where to solve it):
I'm new to this and I tried google-ing it (of course), but I couldn't figure out how to solve it.
Click Capabilities to view app services you can add to your app. From there, turn on the iCloud service:
Read more about this here
Edit: You may need to enable iCloud in Member center too
I solved the issue. I can't really tell how, but I've connected my iPhone to Xcode and clicked on "Fix issues" again it worked this time. Not sure why or how...

iOS7 Screen Capture Prevention / Detection

In my iOS app I need either prevent the screenshot capture (by pressing combination of Home +Power button), or need to detect before it saved to the Photo library .
In previous iOS version before taking screenshot touchesCancelled:withEvent this method will called , but iOS7 onwards this wont work.
Apple provide a notification
UIApplicationUserDidTakeScreenshotNotification
for detecting screenshot capture .The real problem is this will fire only after the screenshot is saved in Photo library .
Is there any methods (Private /Public) for detecting screenshot before it happens , or Just prevent the screenshot feature .
Dont consider it as a duplicate question , it is iOS7 specific question
No, nothing has changed since iOS7 and it will not change in the future, it is a conceptual issue, iOS app doesn't has control over the device public functions, consider you turned off 'taking screenshot' while other application needs it!! How this app would know about that?
Best thing you can do is using Configuration Profile as mentioned #QED valid answer.
You can restrict with a Configuration Profile, as described in the linked question.
Check out the Restrictions Payload section, starting on page 27, of the iPhone Configuration Proifile Reference. The key you want is allowScreenShot, described at the bottom of page 30.
Also, the linked reference states that there are a number of ways to install a profile. It may be possible for you to provide, within the app, some method for the user to trigger your server to install/reinstall your profile. Just a thought, I'm not experienced in the matter.
I'm not able to speak to private APIs. You might check out http://www.modmyi.com, or snoop around on IRC for some jailbreak communities. There are lots of experts out there who may be able to point you to the API, but they don't tend to hang on SO.
Good luck!

Resources