Issue with Creating Card Connect SDK Xamarin binding Library for iOS - ios

I created a Xamarin Binding Library project to map the card connect sdk for ios and was successful in it. But when I try to create a sample project to test the function its giving me the following error.
Could not create an native instance of the type 'CardConnect.CCCPaymentRequest': the native class hasn't been loaded. It is possible to ignore this condition by setting ObjCRuntime.Class.ThrowOnInitFailure to false.
You can find the Objective C & Swift sample and documentation in the
link below https://developer.cardconnect.com/mobile-sdks#iOS
I've shared the binding library project and the necessary SDK framework in Github

I am posting the solution I got after multiple communications with card connect team and microsoft support team.
The working solution is updated in Github: Card Connect SDK Binding
There are couple of points to be noted while anyone is going to utilize this,
Specifying the properties of the native library, you need to set the
below items
Force Load : selected
Linker flags: -lxml2
Smart Link : selected
Setting the Additional mtouch flag where you use it, follow the below steps,
=> choose “options” at the bottom
=> find “iOS Build”
=> find a text input box called “Additional mtouch arguments”, then add the follow script “--optimize=-remove-dynamic-registrar”
Adding the merchant id in the Entitements.plist where you use the card connect library.
Note: You can test the sample using apple pay sandbox account for that you need an apple developer account & apple itunes/appstoreconnect account, with that you need to create the certificate mentioning the apple pay capability and create a provisioning profile with that certificate and
the devices you intend to test. Then sign your test application with the provisioning profile and load it in your iOS device either via Diawi.com or any other testing service. You should be good to verify your solution.

Related

React Native iOS Entitlements file

I'm working on a React Native app that requires use of the camera/photo library. The functionality works in the iOS simulator, however when I test with a physical device I see the following error in the console:
sandbox extension creation failed: client lacks entitlements for path
Based on what I found in the documentation on the Apple development forum, I need to enable the App Sandbox configuration.
This is done by going in Xcode (13.1) to the project > signing & capabilities > click the plus button in the lower-left under TARGETS
When the dialogue box appears, there are various options. However, the sandbox is not one of them.
I found this S/O post that shows the location of the sandbox in the dialogue but does not describe in any detail how to actually add this to a project.
Sandbox extension creation failed: client lacks entitlements? for path:
In the case of a React Native application, how is this done? There is supposed to be a .entitlements file (where I belive the other entitlements should be listed), but I do not see one in the /ios directory in the React Native project or in X-Code. What directory is this located in or if it is to be created, which directory should it be added to? Thanks in advance.

ios Firebase Dynamic Link not opening installed app

I've looked at other previous questions about this topic, and I haven't found the solution for my problem.
I've followed this Getting started with Firebase Dynamic Links on iOS, however if I click on the universal link for testing, https://appName.page.link, I get the following message:
Invalid Dynamic Link
Requested URL (https://appName.page.link/) must be a parsable and complete DynamicLink.
If you are the developer of this app, ensure that your Dynamic Links domain is correctly configured and that the path component of this URL is valid
The previous message makes me think that the created page created by Firebase is created yet, however when I visit the page:
https://appName.page.link/apple-app-site-association, I get the following data:
{"applinks":{"apps":[],"details":[{"appID":"TeamID.com.example.appName","paths":["NOT /_/*","/*"]}]}}
This means that the page has been successfully created.
I have verified that the TeamID has been set properly set in the Firebase settings, and also that the TeamID is the same from XCode and from the Apple developer account.
The URLSchemes, set in Xcode is com.example.appName and inside the Signing & Capabilities in the Associated Domains has the domain: applinks:appName.page.link
Is there anything that I'm missing to configure?
I ran into this issue as well following the video. If you continue in the video he mentions that there is a bug for iOS where you might need to completely uninstall the app, restart your device, and then reinstall the app.
for reference:
https://youtu.be/KLBjAg6HvG0?t=532
Did you created dynamic link here? Firebase > Dynamic Links > New Dynamic Link. Your link should looks like https://AppName.page.link/shareLink
I think this behavior is expected, clicking on the URL prefix (https://appName.page.link) without any path will not take the user to the app since the configurations (deep linking, campaign tracking, platform behavior, etc) is not set up yet.
But once you create a new link along with the prefix (e.g. https://appName.page.link/createdLink), it should work properly.
The bit that tripped me up was that I added "Associated Domains" to the "Release" tab instead of the "All" tab. So when I was running on my app, I'd also get the Invalid Dynamic Link error.

How to use a dynamic framework in a framework?

I am building my framework FooFramework that uses WebRTC framework. After I used the WebRTC framework(https://github.com/zevarito/PodRTC) in my pod as a dynamic framework. My demo app FooDemoApp that uses FooFramework crashes as it runs with not- my-own provision profile on a device. The error message is dyld: Library not loaded... Reason: no suitable image found. Did find... code signing blocked mmap()
I think the problem is that Apple seems doens't allow nested framework. The WebRTC will be signed with my teamIdentifier, but the teamIdentifier is not set on my framework. I wonder what's the proper way except for re-code sign WebRTC?
FooDemoApp would not crash before I added the PodRTC in FooFramework when I run it using not my provision profile on a device.
The relationships between the framework are like this:
FooFramework(before built) includes: PodRTC(not code signed) as a Cocoapod
FooDemoApp(after built FooFramework) includes: my code-signed built FooFramework(code signed with Identifier:io.allen.ALSDK, no team identifier set), which includes code-signed PodRTC(code signed with Identifier:org.webrtc.WebRTC, team identifier PodRTCTeam)
So I have two questions:
How to use PodRTC without crashing on a different provision profile?
Why my demo app wouldn't crash before while it's running with a different provision profile?

Fails to distribute my app: "Your app contains non-public API usage."

After I fixed some bugs and refactored my project which has been release on App Store, it fails to distribute. The Xcode shows the following error message:
Your app contains non-public API usage. Please review the errors, correct them, and resubmit your application.
The app references non-public symbols in Payload/XXX.app/XXX: UICreateCGImageFromIOSurface
XXX is the app name.
I've search the entire project, and didn't find any this keyword (UICreateCGImageFromIOSurface). How can I fix this?
Remove Reveal.framework from your project. This should not be linked in release mode of your binary.
You app contains code not only from sources, but from all statically linked libraries. You have to check all of those for containing private call. Looks like at least Reveal library contains it.
Double check any third-party libraries you are using in your project
I was facing the issue and after checking my pods file, I found that Look Back - Framwork which is available for debug builds only as for as I know. So removing that fixed the issue. Successfully submitted app through Xcode 6.1 for Apple Testflight beta testing :)
Never ship an app linked against the Reveal library. Reveal exposes
your app to deep introspection and will likely cause your app to be
rejected by the Apple review team. Reveal is intended for internal
development and debugging purposes only.
The Reveal service will stop automatically while the iOS host app is
not the frontmost app. It will automatically start again when the app
is re-opened.
Reveal supports inspection of applications compiled against iOS 6 and
later. The iOS Deployment Target build setting must also be 'iOS 6.0'
or later. You may see link errors if this is not the case.
Reveal uses Bonjour to connect with the running iOS application. If
you are running the iOS application on a device, it will need to be
on the same network as the Reveal Mac app to be able to connect with
it. If you have any problems connecting to your application check
your firewall and proxy setting to ensure they are not blocking
communications.
Find out more...
cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview#4.1.0

MonoTouch application iOS signing with Xcode

I have a problem.
I developed an application iOS with MonoTouch, Fantastic!!!
But now my customer asks me that wants to sign him the app, with his certificate.
Is there a solution?
It’s possible create a xcode source from monotouch???
I have read a –xcode command but I found little doc
The --xcode option is deprecated. Once upon a time it was useful to debug some issues but better options exists today.
As for signing you can use the codesign command-line tool to (re)sign the application.
For an example just look at your build output (from MonoDevelop's Error List pad) to see the exact command line that MonoDevelop use to sign your application. Your client will opnly need minor adjustment (to the options) to re-sign it.

Resources