Struggling with XCode Settings for ios deeplinking on flutter - ios

My app should open when someone clicks on a link like:
https://catalogscanner.horizonpedia.com/P7GWqM6ADnG
This works on my android phone so I assume that I have done everything correctly on the coding site. (I am using https://pub.dev/packages/uni_links for that)
So I started by adding the domain to my runner.entitlemens as you can see.
The Target Membership category shows that there is runner not ticked:
When I tick the box and start the build, it fails with the error message below:
To fix this, I have to remove the info. plist from the "Copy Bundle Resources" from my "Build Phases" Section:
If my understanding is correct then The target membership of the runner entitlement should be the Runner, shouldn't it?
Can I try other things to troubleshoot?

Neither of those files should need to have their Target Membership checkbox checked. These checkbox mainly applies to source files such as typical Swift files (.swift) or Objective-C implementation files (.m) for example.
They should not also be part of the Copy Bundle Resources phase. You just should ensure that in the Build Settings pane of your app target, the Info.plist file is correctly set like below:
Regarding the Universal Link support, you first have to be sure that the apple-app-site-association file you uploaded is correctly formatted (I just checked via your domain and it seems to be invalid JSON as my browser Firefox told me that it had issues parsing it; you can also look for AASA validator online that will confirm this).
The process is the following: when iOS will install your app, it will look for the domain you mentioned in your .entitlements file. Then it will retrieve the AASA file from this specified domain and register your app as a handler for those link. Then, if you happen to browse or click to/on a link matching the paths you specified in the AASA file, then your app should launch and you'll have appropriate callbacks in your application delegate where you can intercept the link and take appropriate actions.
If you want more information about Universal Link support, you can look on Apple developer documentation.

Related

iMessage app, "disallowed nested bundles" error trying to archive/upload with binary framework

I have an iMessage app (not an app with an iMessage extension) in which I have successfully added a binary framework (the project runs just fine on device and simulator)
However, I cannot successfully upload the project to App Store Connect - upload from the archive build returns the following errors:
The relevant text of the error is:
The bundle ... contains disallowed nested bundles. Refer to https://developer.apple.com/go/id=framework-imessage
That link (if you follow the instructions for using an newer Xcode version) leads you back to the link below I used to add the framework to begin with... to run you will need Xcode 11 as I am using an XCFramework.
I added the framework to the iMessage app as instructed by Apple here:
https://developer.apple.com/library/archive/technotes/tn2435/_index.html
(see Embedding a Framework in an iMessage App section)
What do I need to change to the settings for the project or extension in order for the archive/upload process to succeed, while actually including the framework I need? I have searched on StackOverflow, and found a variety of posts related to cocoapods, or around various build settings of "Always Embed Swift Standard Libraries" that do not help.
I have reduced the problem down to a simple sample app you can see here, which builds and runs just fine but cannot be archived and uploaded:
https://www.dropbox.com/sh/jpa4oe7zlnb21wl/AACXkLbxIbayZUtJr3VDwO07a?dl=0
That directory contains a zip file of the project, and an image showing the error encountered.
You have .xcframework in your project. May be you haven't enable Build Libraries for Distribution in Build setting when you have build .xcframework. You can refer this link for this.
Edit:
Error message is Invalid Bundle. So check bundle name of message extension and frameworks which are in the .xcframework.
I've made a few changes regarding the stub app, it seems to work and validate ok.
Remove the Embed Framework from the extension target.
Add the Embed Framework in the app target, set the Destination to 'Frameworks'

React native IOS app web-services works on simulator but not real IOS device

I have done with all the settings of my react native project and trying to run on the IOS simulator, it's working fine. Means all the api working properly.
So now I have to share my .ipa file to team members for testing, so creating .ipa file I am using procedure defined on react nativeRunning On Device documentation.
For creating .ipa file using Xcode following below process:-
In Edit Scheme option, change Build Configuration to release.
Clean Build Folder
Create Build.
Archive build.
After that exporting .ipa file using valid certificate.
Solutions I have tried:-
Checked with this solution, because the domain I am using to hit web service is not secured.(It's http)
Enable Transport security flag.
Added main.jbundle (created using command line) to Copy Bundle Resource option in Build Phases.
While adding Alert in api call, getting below error (check image)
Still No luck.
Please let me know, what I am doing wrong?
Please check api server live link is working or not. In my case, I am testing whole api's on local network (In LAN). But when trying with live url, I am also facing this issue.
So that time I made one mistake, that my url should contain http:// but in actual it was https://.
It's pointing to main.jsbundle file, that means it's having issue
related with your code.
So check it once.

SiriKit: Cannot reply to a message

I just added the Intents Extension to my Project, and decided to try it out using the example code that is added by default.
I select the Siri target, run on the device, Siri pops up and I start with: "Search messages in [MyApp]".
Method handleSearchForMessages is executed in IntentHandler.m and Siri responds You have a message from Sarah.
After reading the message, Siri asks Would you like to reply?
But when I answer Yes, I get:
I don't see an app for that. You'll need to download one.
The weird thing is that when I try the same on a brand new Project, it works, even without enabling the capabilities.
I really don't know why in my project works the part of searching messages, but not the part of replying.
Of course in the Info.plist I have the 3 default Intents for messaging.
Thanks
Alright I kinda solved the issue or at least found a workaround:
I have 2 targets, one for PROD and other for Staging environment.
The display name of the app in both targets are same, but matches only the name of the target for PROD.
The Intents Extension was embed in the Staging Target, where I was getting the error mentioned above.
However, I tried exactly the same directly on the PROD target and it worked.
Provisioning profile and capabilities are same for both targets, so I assume is related to the mismatch between the name of the app and the name of the target built

Can't download GoogleService-Info.plist file

I'm trying to setup Google Analytics for my new iOS app, when following the instructions here.
It instructs me to click the "Get A Configuration File" button, but that button just sends me to another page that has a spinning, nothing ever happens. I already have a property setup in Analytics for web and a view setup for mobile.
Can anyone share the GoogleService-Info.plist file with me so I can attempt to manually fill in the details of the file and add it to my project?
It happened with me also. If you close everything and follow that link it worked for me next time. You can try to do that. Below is the link of sample plist file, of course I replaced tracking id, bundle id and app id to strings from original values. Hope it helps.
Sample Google Plist file
Generally in iOS
1) Create your project in Firebase console https://console.firebase.google.com
Click add project and follow steps.
2) Now open this link to get GoogleService-Info.plist file
https://developers.google.com/mobile/add
-->Click Get Started
-->Select your project
Ex: CloudFirestoreSwift
--> Now select domain Ex: iOS
-->Now add app bundle id then GoogleService-Info.plist file will be generate, download it and complete the steps if required.
NOTE: Please don't change file name. It's must be GoogleService-Info.plist
If you already generated GoogleService-Info.plist file. Now select your project and go project settings.
--> Go General tab, you can find GoogleService-Info.plist file here download it.
Steps for getting configuration if your first time login to google developer account.
1. Open google developer console.
2. Login to developer console.
3. Create project with valid name.
4. Enable google analytics.
5. Then get the configuration file.
The download link is not always immediately visible and you have to scroll up to get it, I happen to press next before downloading and I missed the opportunity to download the file.
I prefer the automatically generated file as I am lazy (aren't we all)
So, follow these steps
Go to https://developers.google.com/analytics/devguides/collection/ios/v3/
Scroll down to Get a configuration file
When prompted for the app name and bundle Id, just use the drop down menu and you'll find your previously created app details there.
Proceed to the next screen Continue to: Choose and Configure Services
Select your service, note that your previously selected ones will have a green arrow (Analytics in the case below)
Select Generate configuration file
You'll be given an opportunity to download the file again.
Voila!
You need to login on https://console.developers.google.com create your first application, then go back to https://developers.google.com/mobile/add the website will now work correctly.
Installing Ignore X-Frame headers plugin on Chrome made this bug vanish
Same here, I got following invalid json file:
)]}'
{"status":401,"message":"Invalid authuser parameter"}
and that is resolved by clearing cookies on google.com on your browser.
Thanks to Sanjana I decided to look at Google's web code and found they have an X-Frame error.
So the url you can visit is https://accounts.google.com/ServiceLogin?service=cloudconsole&osid=1&passiv…collection/ios/v3/app?configured%253Dtrue&hl=en#add-config&cntlbl=Continue

Invalid Signature - Code object is not signed at all

Im able to submit my app through Xcode 6.3.2 perfectly fine. Validation and analyzing pass perfectly. Once it successfully submits to the app store though I get an email from Apple:
"Dear developer,
We have discovered one or more issues with your recent delivery for "App". To process your delivery, the following issues must be corrected:
Invalid Signature - Code object is not signed at all. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level). Additionally, make sure the bundle you are uploading was built using a Release target in Xcode, not a Simulator target. If you are certain your code signing settings are correct, choose "Clean All" in Xcode, delete the "build" directory in the Finder, and rebuild your release target. For more information, please consult https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html
Once these issues have been corrected, you can then redeliver the corrected binary."
I have tried redownloading the distribution cert, regenerating the distribution provisioning profile, added "--deep" to the code signing "Other Code Signing Flags." I even checked the bundle name etc, everthing is alpha numeric. I was able to submit fine on May 22nd, now on June 3rd everything breaks.
Doesnt make any sense, any help would be appreciated!
UPDATE & SOLUTION:
While I don't have a good explanation of why this suddenly has happened within the last week, I finally found a solution this morning.
I started with a new project and submitted to the app store with nothing but the identifier and correct version and build numbers, which processed fine. After that I started piecing in any assets that wasnt my own code until I got the "Invalid Binary" email. I narrowed it down to the Hockey App SDK (embedded framework) which was causing the issue and not even being used anymore so I removed it from the project (problem solved). The disturbing part is that nothing fails on my end during validation or submission and according to github this directory and content hasn't changed in a year, which leads me to believe something changed server side at Apple.
I did see a lot of posts via google saying that frameworks needed signed etc and when using Xcode 6 and iOS 8 it seems to be the standard which is why I assumed it might be something along these lines.
Im not sure how helpful this is as I was building for iOS and this article is in reference to Mac, but HockeyApp explains in order to distribute to the app store you need to sign the framework with your own identity here:
http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/hockeyapp-for-mac-os-x
If anyone has anymore technical notes on this or why this suddenly changed Id love to understand this better.
I've checked a variety of places and there seem to be several things that are now being rejected by iTunes Connect. The solution is typically to remove the offending resource from the Target -> Build Phases -> Copy Bundle Resources (as #azizus mentions). Unfortunately Apple doesn't tell you what file causes this issue with your builds so you have to go hunt for yourself. Here are some items that I've found that will do it:
Shell scripts (Look for .sh files, though they could have a different
extension)
Also, look out for files that are listed as executable, when they
shouldn't be. Those might be a good place to look for shell scripts
that you might have missed.
Frameworks (Framework bundles, even .a or .o files - you
don't need them as they will get compiled into the executable binary)
DocSets (I don't know why, but I found that the HockeyApp SDK
includes a DocSet bundle which was the cause in my experience)
Sometimes this might also happen due to some weird entitlements
issue. The entitlements you have may not match up with the App in the
provisioning portal.
Look out for invalid characters in your app name or file names (like
wildcard characters)
This is a pretty broad list, something I did to help in the search is build an archive and then show the contents of the .app in the archive using finder, sorting by file type. The strange thing is that these files actually exist in the _CodeSignature/CodeResources file.
My own theory on why this is happening is that Apple made some changes (or is making some changes) because of Extensions and WatchKit apps. Essentially, you are including a couple of binaries in the packaged IPA (phone app, extension, watch app). They probably want to make sure you're not including something else that could potentially be executed. Unfortunately, the error message is too vague (really it's incorrect) for most.
This took me 3 days to debug.
In the end it was due to an external framework I created (lets call it X) that I was importing via carthage. X had its own dependencies that it was importing via carthage as well. In order to link these frameworks it had a path in the build settings called Framework Search Paths set to the location of the frameworks. For some reason it was this flag in this framework that was causing the problem specified in the questions. I eventually imported X's dependencies with Git submodules so that I didn't have to set the Framework Search Paths flag. I the exported the framework and manually added it to my project I was submitting to the AppStore. Then it worked.
I can reproduce this when I 'create folder references' for my resources folder as opposed to 'create groups' when adding in.
I contacted HockeyApp and they suggested not to add the SDK to app bundle. So I navigated to Target -> Build Phases -> Copy Bundle Resources and removed HockeySDKResources.bundle from there. iTunes Connect accepted my binary.
In my case it was a info.plist duplicated that was not used. (it wasn't easy find out the problem). I removed almost all the files of my project until remove this one and.. it worked
Clearing the value for Code Sign Resource Rules Path in each target resolved the issue.

Resources