Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ios): support new property to remove note #11248

Merged
merged 3 commits into from Oct 8, 2019

Conversation

vijaysingh-axway
Copy link
Contributor

@build build added this to the 8.2.1 milestone Sep 27, 2019
@build build requested review from a team September 27, 2019 21:29
@build
Copy link
Contributor

build commented Sep 27, 2019

Fails
🚫 Tests have failed, see below for more information.
Messages
📖

💾 Here's the generated SDK zipfile.

📖 ❌ 1 tests have failed There are 1 tests failing and 471 skipped out of 4336 total tests.
📖 ✊ The commits in this PR match our conventions! Feel free to Rebase and Merge this PR when ready.

Tests:

ClassnameNameTimeError
android.emulator.Titanium.Network.HTTPClientcallbackTestForGETMethod1.408
Error: 404 : Not Found
at HTTPClient.xhr.onerror (/ti.network.httpclient.test.js:409:16)

Generated by 🚫 dangerJS against ec5e9dd

type: Boolean
default: true
platforms: [iphone, ipad]
since: 8.2.1
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From an architecture point of view, this is the wrong API design I think. Apple will very likely add more properties to the "sensitive" ones, so probably the user should have a property to override all fields that should be fetched - with the default not containing this one anymore. And it's likely a breaking change, just like this one also is.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can be agree with you that we have to change/extend the behavior of exiting APIs specially which are fetching use contacts data. Probably android also have to make some changes to have a parity and there may be some breaking change. For that I think we can not make it before 9.0.0.
But this new property will give developer an option to avoid fetching the 'note' in iOS otherwise they have to make some unnecessary setup. So there is no problem in having this new property. And by default this property is true, so there is no breaking change.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without implementing this property, apps are being rejected, so it's a breaking change for them. Either adding this property or defining the properties they actually need, which will be more future proof in the first place. But it's just a community comment 🙂

Copy link
Contributor

@sgtcoolguy sgtcoolguy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code change looks ok for now, but this is an odd way to work around the issue. Apps will need to set this to false on iOS 13+ or add the entitlement. Is there any way to detect entitlements and make this false on iOS 13+ if the entitlement is not declared/set? Just seems like if we're going to make a change here we should try and "default" to a working version?

@vijaysingh-axway
Copy link
Contributor Author

code change looks ok for now, but this is an odd way to work around the issue. Apps will need to set this to false on iOS 13+ or add the entitlement. Is there any way to detect entitlements and make this false on iOS 13+ if the entitlement is not declared/set? Just seems like if we're going to make a change here we should try and "default" to a working version?

I don't think there is any way to read entitlements at runtime. In this release default value of this property is set to 'true' to avoid breaking change. We will make default value of this property to 'false' in major release, 9.0.0.

@ssekhri
Copy link

ssekhri commented Oct 4, 2019

FR Passed
Fetching of contacts works without error when Ti.Contacts.includeNote is set to false.
Verified On:
Mac OS: 10.14.5
SDK: 8.2.1.v20190927141609
Appc CLI: 7.1.1
JDK: 1.8.0_162
Node: 10.5.0
Studio: 5.1.4.201909061933
Xcode: 11.0
Device: iPhone X(13.0), iPhone 7Plus(12.3.1)

@hansemannn
Copy link
Collaborator

This still doesn't look right, sorry. And I highly suspect that the apps will still be rejected because Apple checks their blacklisted API's from the compiled app symbols rather than manually. So if the binary still contains CNContactNoteKey (which it does, because you only added an if-statement), the app will very likely be rejected again, even with this fix. Just my 2 cents.

@vijaysingh-axway
Copy link
Contributor Author

If you see doc https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_contacts_notes, if one is fetching note without entitlement key, it will give error at runtime. Having CNContactNoteKey is not a problem, it should not be used to fetch note without entitlement.

@sgtcoolguy sgtcoolguy merged commit 8f1b2a6 into tidev:8_2_X Oct 8, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants