Trying to code sign Mac app with Developer ID - get com.apple.developer.maps entitlement is not allowed (error code -67050) - maps

I am code signing a Mac app using my Developer ID certificate so we can send it to beta testers. Thanks to helpful articles here I made sure I have the right certificate and private key. (This is a new app id) When I select Developer ID and Archive, I select to distribute with Developer ID and it validates all the checks successfully (Using Xcode 6.1) and creates my app file. When I launch it I crash with this in console (another great tip found here to check console for the REAL error):
killed com.[appname.OSX][pid 5946] because its use of the com.apple.developer.maps entitlement is not allowed (error code -67050)
11/7/14 11:26:23.263 com.apple.xpc.launchd[1]: (com.VIPorbit.OSX.192016[5946]) Binary is improperly signed.
So, I know the docs say you cannot distribute an app with Maps outside of the MacApp Store, but I assume this mean selling Mac apps as is often done. We are using the Mac App Store all the way. Also I can successfully archive and submit to the Mac App Store and we're in review.
The challenge is we want to get this out to some beta folks and Maps is a key feature we've added. I really don't want to go the old route with getting this Mac info and adding it to the provisioning file, defeats the purpose of the Developer ID option.
Anyone else experience this?

You can't distribute an application utilizing MapKit with a Developer ID.
MapKit is an Mac App Store-only feature.
It's a shame that this is not clear from the documentation.
If you want to test the app before the Mac App Store submission, I am afraid you have to add beta-testers' machines to the provisioning profile and sign the bundle with a "Mac Developer: ..." code signing identity.
😔

Related

Admob is not showing ads on real device after build. Expo React-native

Expo SDK Version: 36.0.0
Platforms(Android/iOS/web/all): Android
I use the expo Admob lib to implement AdMob banners and interstitial Ads on my App. When running through expo cli on my emulator it works perfectly. When I use real adUnitID it shows a real ad. However, after building the apk file and installing on real devices, the Ads are not showing anymore.
My implementation is quite simple:
<AdMobBanner
bannerSize="mediumRectangle"
adUnitID={'ca-app-pub-my-key/my-key'}
onAdViewDidReceiveAd={() => adReceived('success')}
onDidFailToReceiveAdWithError={() => adReceived('err')}
/>
adReceived(arg) - it’s just a logger, which save results, do I have success request to Google ad server or not.
On real device I have err messages. So, it looks like then app doesn’t have permission to making request to the internet.
I don’t have permission section in my app.json, and any other specific setting in this file. According to Configuration with app.json page - To use ALL permissions supported by Expo, do not specify the "permissions" key.
I found on stackoverflow and expo-forum a lot of relevant topics. And no one provided any working solution.
If I should provide some additional information, please specify what I need to add.
If there is a solution to this, which I didn’t find then please add the link.
Let’s help to resolve this question once and forever for all developers.
Thanks!
According to this post, there are six reasons. But probably, you did not update your payment details or your region has a slower fill-rate. Slower fill-rate means, there are less advertisers targeting these markets (in your region or language).
how I fixed the problem
first of all - you can add an argument with error
onDidFailToReceiveAdWithError={(errorCode) => console.log(errorCode)}
secondly
When I added my apps to the Google Play store and install it from the store, then my app start showing Ad correctly

Codename One Preferences/Storage permissions

I have developed and published an app in Google Play Store, which only send simple String request to REST API and store the results in the Preferences. The same app is also submitted to Windows Store for publication, however it was rejected due to the following reason:
The app declares use of the sensitive capability [musicLibrary, picturesLibrary, videosLibrary] without appearing to access the declared capability. Please removed the sensitive capability declaration and re-submit the app.
Upon inspection to Google Play Store submission, I noticed the same permissions are requested:
This app has access to:Photos/Media/Filesread the contents of your USB storagemodify or delete the contents of your USB storageStorageread the contents of your USB storagemodify or delete the contents of your USB storageOtherreceive data from Internetview network connectionsfull network accessprevent device from sleeping
So my question is, do Preferences really need these permissions, or can I set some kind of build hints to remove these permission requests, especially for UWP build? I have also tried to set android.blockExternalStoragePermission build hint, but the permissions are still requested in Android build. I have yet to try iOS build since currently I don't have Apple Developer account.
Thank you very much in advance.
Edit #1 (23/10/2018):
Upon further inspection, I found that I have mistakenly uploaded the version that didn't declare android.blockExternalStoragePermission to Google Play Store, so all good on Android version.
Currently I'm not using any of cn1libs, and here's the list of all classes imported in my application:
java.util.HashMapjava.util.Mapjava.util.Randomcom.codename1.components.InfiniteProgresscom.codename1.components.ToastBarcom.codename1.components.ToastBar.Statuscom.codename1.io.CharArrayReadercom.codename1.io.JSONParsercom.codename1.io.Logcom.codename1.io.NetworkManagercom.codename1.io.Preferencescom.codename1.io.rest.Responsecom.codename1.io.rest.Restcom.codename1.l10n.L10NManagercom.codename1.ui.Buttoncom.codename1.ui.Componentcom.codename1.ui.Containercom.codename1.ui.Dialogcom.codename1.ui.FontImagecom.codename1.ui.Formcom.codename1.ui.Labelcom.codename1.ui.events.ActionEventcom.codename1.ui.events.ActionListenercom.codename1.ui.layouts.BorderLayoutcom.codename1.ui.layouts.FlowLayoutcom.codename1.ui.layouts.GridLayoutcom.codename1.ui.plaf.Bordercom.codename1.ui.plaf.Stylecom.codename1.ui.plaf.UIManagercom.codename1.ui.util.Resources
So my original question remain, how do I set the build hints to prevent the same external storage read/write permission in Windows and iOS?
See the section titled "Android Permissions" here, for a list of some API's that might trigger extra permissions. I suggest extracting the manifest from the XML and inspecting it. It should include two permissions based on your description you should have two permissions there:
android.permission.WRITE_EXTERNAL_STORAGE - which you should have been disabled when you applied android.blockExternalStoragePermission
android.permission.INTERNET - this one you actually need
I'm assuming you have a permission for media access and here it becomes a question of where it came from?
Did you use a cn1lib that might include a feature that triggers this?
Do you have a feature in the app that isn't active yet?
Once you have the specific name or results of this investigation comment here and I'll revise the answer with more details.

PhoneProductId in appxmanifest: Upgrade from Silverlight to Runtime vs. Map Service Application Id (wp RT 8.1)

I'm updating an app from Windows Phone Silverlight 8.1 to WP Runtime 8.1 and got an issue with the "PhoneProductId" in the Package.appxmanifest:
1) Either I provide the Id from the old Silverlight version of the app. Then I can update it in the console via "AppDeployCmd.exe" /targetdevice:de /update MyApp_1.2.3.4_AnyCPU.appxbundle" with no user data being lost. But when I run MapRouteFinder.GetDrivingRouteAsync(...) I get an InvalidCredentials-error, since I haven't provided the proper Map Service Application Id, which in RT needs to replace the PhoneProductId (in Silverlight, it needed to be provided via c#, alongside the Authentication Token).
2) Or I provide the Map Service Application Id and can use MapRouteFinder.GetDrivingRouteAsync properly. But then I can neither /update the app (error message "Application is not installed" in the console) because of different PhoneProductIds in the two app versions. I also can't /install it without first uninstalling it ("Could not register package").
Anybody got a way out of this dilemma?
I've now uploaded soulution number 2 to the store, with GetDrivingRouteAsync working before the upload. The update did work, without any user data being lost, so no problem here.
However, when using the version from the store, GetDrivingRouteAsync is again not working (same problem as in solution number 1).
Seems to be exactly the same issue as this one:
https://stackoverflow.com/questions/32891052/invalid-credentials-with-getdrivingrouteasync-only-when-i-create-packages-for-st

Problems using Twitter4j on GAE throws 401 just after deploy

Well, I'm having a weird error here:
I'm developing one GAE app to read some Twitter Data, and after read a lot of docs, I have it working on my test server (Running on my pc) but after deploy and test on the real (my appspot domain) it shows this message:
401:Authentication credentials (https://dev.twitter.com/pages/auth) were missing or >incorrect. Ensure that you have set valid consumer key/secret, access token/secret, and the >system clock is in sync.
message - Could not authenticate you
code - 32
I've tried to recreate my OAuthAppToken and OAuthAppTokenSecret keys, even changing the permissions to "Write, Read and Direct Messages" and even assingning one Callback URL but nothing seems to work...
I've tried using twitter4j.properties OR using setOAuthConsumer(TW_CONSUMER_KEY, TW_CONSUMER_SECRET) OR a ConfigurationBuilder whith the correct constants and I'm experimenting the same Issue.
I'm working with AppEngine 1.8.3 and Twitter4j 3.0.4
Iv'e been writing on log and the Twitter object seems to be well created... I dont understand why is working on my PC but not on the real app.
On some other post someone says that could be because it needs to use Sync clock.. but he doesn't explains where to change that property...
Did someone had a clue?
Ok, the problem was me (and Twitter.... well..... I really think it was Twitter problem for being so dark on his api messages)...
On testing server I was looking for an existing account and on the cloud I was looking for an inexistent one. So, It was my mistake. But seriously, what about Twitter saying: "Access Forbidden"? That doesn't have any sense...

How can i get a connection ticket to quickbooks online for dev/testing a one off web app?

I'm trying to build a one off webapp that will communicate with our business QuickBooks Online account. Most of the research I've found says for development and testing, use the "desktop" way of connecting (to avoid cert headaches). So I've registered an app and got the id from here:
appreg.intuit.com/
The problem is, everywhere I've seen tell me then to go here to get a connection ticket
login.ptc.quickbooks.com/j/qbn/sdkapp/confirm?serviceid=2004&appid=YOUR-APPLICATION-ID-HERE
When I do that however, it redirects me to here
qbo.intuit.com/c1/v60.147/0/login?redirect=true
I mucked around with and finally find some way to access the "old" quick books stuff, when i went to setup a test company it sent me here
ptc.qbo.intuit.com/c1/v0/offline.shtml
which tells me
"The QBO PTC environment is no longer available, and was replaced by the new E2E environment. Please go to https://e2e.qbo.intuit.com/ going forward. We are very sorry for any inconvenience and confusion. If you have questions, please reach out to Eric Bullen"
How can I get a connection to a test account to do some development?
How can I get a connection to a test account to do some development?
Unless you're an Intuit employee, you can't get a test account.
With that said, you don't need to.
Just use your live QuickBooks Online account. You can sign up on their website to get a 30-day free trial if you need to.
When you register at https://appreg.intuit.com new link - http://developer.intuit.com/Application/Create/QBOE, make sure you register in DESKTOP mode, for the PRODUCTION environment.
Then use the production URL to get your connection ticket:
https://login.quickbooks.com/j/qbn/sdkapp/confirm?appid=YOUR-APPLICATION-ID-HERE&serviceid=2004&appdata=1
(substitute in your application ID that you get back from appreg)
More info and examples on our QuickBooks integration wiki.

Resources