Deep link issue on iOS (Universal Link) - uber-api

I have created several Uber deep links via the Uber deep link generator and the links work fine on my Android device. However, when I access the links on my iOS, the Uber app comes on but the dropoff address doesn't come up. Instead, it shows me an empty search bar and I have to type in the address again. I proceeded to re-arrange my client_id to the front as shown but it still yield the same results.
https://m.uber.com/ul/?client_id=jZywlUAYPjYl3uRcFPquz0e_wJqLSmPZ&dropoff[formatted_address]=No.%2047%2C%20Beian%20Road%2C%20Zhongshan%20District%2C%20Taipei%20City%2C%2010491&action=setPickup&pickup=my_location
Does anyone know what I did wrong or what else should I do for this to work on both Android and iOS?

There are two things that you can check :
A minimum OS level of iOS 9 is required for Universal Links support. So please make sure your iOS version is up to date.
Can you try to add to your Universal Link : &d‌ropoff[latitude]=xx.xxx&dropoff[longi‌tude]=yy.yyy
UPDATE:
I have tested following Universal Link on my iPhone and it is working:
https://m.uber.com/ul/?action=setPickup&client_id=Rd3a2B9JITPWPLPzmvXXXXXXX&pickup[latitude]=25.0791848&pickup[longitude]=121.5265924&dropoff[latitude]=25.0777658&dropoff[longitude]=121.5283466&dropoff[nickname]=No.%2047%2C%20Beian%20Road%2C%20Zhongshan%20District%2C%20Taipei%20City%2C%2010491
Or
https://m.uber.com/ul/?action=setPickup&client_id=Rd3a2B9JITPWPLPzmvXXXXXXX&pickup[latitude]=25.0791848&pickup[longitude]=121.5265924&dropoff[latitude]=25.0777658&dropoff[longitude]=121.5283466&dropoff[formatted_address]=No.%2047%2C%20Beian%20Road%2C%20Zhongshan%20District%2C%20Taipei%20City%2C%2010491
I have added pick up location because my real location is not the location you specified - but pickup=my_loc‌ation is also fine if it is not against Uber terms related to pickup and destination distance. Also instead of "dropoff[formatted_address]" try to use "dropoff[nickname]"

Related

selectChannel command is not working on the Google Assistant

I'm trying to add a select channel trait.
what I did was that I followed the docs,
1- Add the ATTRIBUTES to the device I want to apply this feature on, for example, a TV device type
2- I guess we are all done as every other command works with my code
What I actually did was the following to the device database in Firestore
then added the
case "action.devices.commands.selectChannel":
in the
switch (execution.command) {}
code
then reloaded the device from the google home app
then when I try to call
"Change to ABC on my TV"
it says
'Sorry, I don't understand.'
and nothing appears on the logs
otherwise, everything is working perfectly,i.e setting the volume and On/Off.
what am I doing wrong, please?
UPDATE:
Today I tried command "action.devices.commands.returnChannel" and "action.devices.commands.relativeChannel" and they are working fine
and all three commands belongs to the same trait!
I've seen a lot of users complaining about this command on many sites
like the following 1,2,
could this be related,
I'm still in debug mode, would it be fixed when I publish my app
UPDATE #2
I tried it today with an android phone and it works fine with selectChannel command,
previously I was testing with an iPhone with google home and google assistant apps on their latest release, and the selectChannel is the only command that didn't work there.
Hope it's just related to the debugging mode
It is usually unexpected to have a trait / feature working on the Google Home App on Android but not on the iOS version, as their functionality is nearly identical. The accuracy on the speech to text conversion on both platforms might be different, which could be affecting the functionality. You can try out typing your request to see if that helps in any way.

Best way to share beta

I'm just trying to load my first app up to App Connect in order to let a few friends test it. So they can download it.
Got though the first few headaches like Frameworks not being set up correctly...
Now of course the final authorisation has failed due to lack of certain images and icons non of which I'm bothered to do right now I just want to be able to remotely share the app.
Do I really have to get all that stuff fixed first?
Is it not possible to share a slightly rough version via TestFlight?
EDIT:
These are my errors. Not sure what the first error means but the others obviously for missing image data.
First, I'd recommend fixing those errors anyway. They're simple. Just add an app icon with the correct sizes. It doesn't have to be a good/final icon yet. You can use my script here: https://gist.github.com/DaveWoodCom/0b9dd0efb9d10f0f0ba9977ccc35a86a
that takes a simple 1024x1024 png file and resizes it to all the required sizes for you. It even gives you a Contents.json asset catalog file.
Second, if you're just sending the beta to your friends, you don't really need to go through TestFlight review yet. You can either create a user account in App Store Connect for each of your friends (note: I'd recommending using your own email address me+friendsname#yourdomain.com for their accounts so they can't actually log into ASC and see any of your data), or you can create an Adhoc distribution profile for your app and include your friends device UUID's. Then you build your .ipa file and send it to them to install. You could even use a new project I've just created: https://github.com/DaveWoodCom/OTAgo and let them install the app over the air, via a web site. Note that project is brand new and thus is still in beta (will change a lot in the coming weeks, but it should be decent enough for your use case).

Google Maps not working on iPhone simulator

I've implemented the "Getting the Google Maps SDK for iOS" step by step
finally the simulator running ok no errors found but the map has no details except the marker.
As showing in the picture:
Also the output on the bottom has this message:
2012-12-23 01:06:59.869 GogleMap[3680:c07] GMSZoomTableQuadTree lacks root zoom table for >tile type (mapType: 10)
2012-12-23 01:07:00.042 GogleMap[3680:1b03] Google Maps SDK for iOS version: 1.0.1.1154
2012-12-23 01:07:00.375 GogleMap[3680:c07] ClientParametersRequest failed, 3 attempts >remaining. Error Domain=DASHConnectionError Code=100 "The operation couldn’t be completed.
(DASHConnectionError error 100.)"
Help please and thanks in advance.
Solved: I think we've all skipped a small but very important step in the process.
To get started, enable the Google Maps SDK for iOS service in the Google APIs Console alongside other Google APIs.
Once you enable GoogleMap SDK for iOS in the Google APIs Console, your app will correctly load the tiles on the next run.
#user1924208 I am having the same issue. I have searched the internet tirelessly for the answer and unfortunately I think we are out of luck. The Google API Console is probably showing you the API key for Google Maps v.3 which is NOT the Google Maps iOS API key. Therefore when you use that as your API key, the validation request will always fail.
It seems as if they haven't issued many API keys for the iOS version for whatever reason. As frustrating as it is, you will just need to wait until you receive an email from them (not really sure when that will be...).
You can confirm this because replacing the current API key with any random string will produce the same results. By the way, this also produces the same results both on simulator and on a real device, which I have tested.
Update
I just got an email from Google Maps that my API key is now available. I switched out the MKMapKit with GMSServices and things are working. It seems like they are a little more comfortable with releasing API keys now so hopefully you will get yours very soon.
Heads up, make sure you've also enabled "Google Maps SDK for iOS" in the Services tab.
I was getting a similar error till I realized I had only generated an API key but forgot to enable the service. Solved my issue.
SDKDemos[160:907] ClientParametersRequest failed, 0 attempts remaining (0 vs 5).
Error Domain=com.google.Maps.GMSDASHConnection Code=100
"The operation couldn’t be completed. (com.google.Maps.GMSDASHConnection error 100.)"
I had a similar problem, but I was sure that the API key was good because the example project from the SDK package worked with that key - bundle ID pair I used in the actual app. The latest (1.2) version of the sdk actually logs out a warning if your API key does not seem to be valid.
The reason it failed to display the map was that I did not fill in a build number in target summary tab of the project settings. Turns out you absolutely need to have CFBundleVersion set in your Info.plist for the google map to work, otherwise the map just stays blank with no errors or warnings shown or even web requests being made.
I had same problem. I think the problem is my "bundle indentifier" of my project is different from one of bundle identifiers in my Google APIs Console.
So I add more bundle indentifer for my Google APIs Console: select your project itself from the Project Navigator, and choose your application's target. In tab Summary, remember your string in Bundle Identifier.
Go to Google APIs Console page, select API Access pane in the console, locate the section Key for iOS apps, select Edit allowed iOS apps...and add your bundle indentifer that you remember above. Rerun your project and done!
Just make sure Location is enable from
Simulator options Features->Location->Apple
I was having the same problem, then i went to the google console and clicked on "Generate new key" and the the new key Worked!
Make sure you havn't changed your
[bundle identifier]
for the app. It should match with the one you used when generating API keys.
Following up on this from a different angle:
There was a bug in later versions of the Google Maps framework that prevented maps from being able to be instantiated/created/added to superview if the app was in the background.
When you did that, the resulting map would show up as completely blank other than the Google logo in the bottom left. The reason for this is because OpenGL rendering is not allowable by the OS while backgrounded; they just needed to restart the renderer once it was foregrounded.
Google has finally fixed this (after about a year) so please upgrade to the latest and greatest.
If you use Google for Business:
pod 'Google-Maps-iOS-SDK-for-Business', '~> 1.11.1'
A repro of this issue is here for older versions.
Visual repro:
Important: If you want to practice on google maps from iOS devices then just download the GoogleMaps.framework.
Unknowingly I have downloaded GoogleMapsM4B.framework and faced issues like 'your key may be invalid for your bundle id: com.company.example'
If you want to use GoogleMapsM4B.framework in your project then
1.You should request support on the Enterprise Support portal(Google's website)
2.You must enable Google Maps Mobile SDK for Work not Google Maps SDK for iOS in Google’s console website.
Incase if you want to use GoogleMaps.framework not GoogleMapsM4B(Maps for Business) then you need not request support center, you just need to enable Google Maps SDK for iOS in Google's console website.
You can find the key differences between the Google Maps SDK for iOS and the Google Maps Mobile SDK for Work(M4B).
and import GoogleMaps/GoogleMaps.h to your file and pass your api key to below method:
[GMSServices provideAPIKey:#“Your API Key“];
(or)
If you have valid license then download GoogleMapsM4B.framework and import GoogleMapsM4B/GoogleMaps.h to your file and pass api to same method [GMSServices provideAPIKey:#“Your API Key“]
but I guess you may get this key only after purchasing license.
So the main issue I have faced is... instead of downloading GoogleMaps.framework I have downloaded GoogleMapsM4B.framework and added to my project. Every time I run my project it gave me an error saying "Your key may be invalid for your bundle ID: com.example.sampleapp"
Now my project is working properly.
Looks like you haven't specified a valid API key. Do you have one?
This error is indicative of an invalid key used to initialize the Google Maps:
[GMSServices provideAPIKey:#"YOUR_API_KEY"];
The key is issued by Google specifically for the iOS SDK (apparently only to a few chosen ones); the keys for Google Maps SDK v2 and v3 would not work on Apple.
A way to confirm that the error is indeed caused by an invalid key is via displaying a pushpin. Pushpin does not require a valid key, so it will be visible on an empty map view object. Coding the example from the Getting Started page https://developers.google.com/maps/documentation/ios/start#add_a_map should result in the app displaying an empty map view (with yellowish background and a pushpin at the center).
The best way to guarantee the pin is visible is to use exactly the same coordinates for both the camera and the marker, see the snippet:
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:43.65
longitude:-79.45
zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView_.myLocationEnabled = YES;
self.view = mapView_;
GMSMarkerOptions *markerOptions = [[GMSMarkerOptions alloc] init];
markerOptions.position = CLLocationCoordinate2DMake(43.65, -79.45);
markerOptions.title = #"Greater Toronto Area";
[mapView_ addMarkerWithOptions:markerOptions];
Another heads up!
Ensure that your app's bundle identifier matches the bundle id defined in the "iOS apps" field in Google APIs Console.
Got the same issue. For sure did everything right.
And the thing was that your API key needs some time to get working (maybe information about it propagates through google servers, meaning your closest server could not yet know about the new API key).
So in some 5 minutes after API key creation errors stopped and I have fully working API key. (note, I didn't receive any e-mails from google).
This helped me out: (Misspelt API key because XCode originally returned an error unless API was surrounded by {} IOS - ObjC Google Maps Api Key
I solved this problem as follows.
Go To Google Maps API Console(Old).
Enabled Service was Google Maps SDK for iOS and Google Street View Image API.
I have disabled Google Street View Image API.
And Then, error is no longer output.
for me it was due to that my app's bundle identifier has been changed. After taking new API key for the new bundle identifier it start to work again.
First thing is make your keys are right. Than check if you have enabled Google Maps SDK for iOS. Than run app on device, rather than a simulator.
try not to save API Key on any constants. Directly pass the value. If it is not working try regenerating the API Key Map will work for sure
MapServices.ProvideAPIKey ("AIzaSyAnxfhuAwEqdVhQpoUkGFZpsBukOSXVFr0");
happy coding :)
Now Apple remove the Google map and Add Apple map,.
Check the Following things:
Decrease Zooming in Map View.
What version iOS Used? if you used iOS 6 the google map not work Apple map must work.
Some times the Simulator not support some core functionalists kindly check the functionality to device.
Make sure the delegate and datasource must set.
Thanks.

How to determine, whether an iphone app (previous/next version) is existed in our device or not?

I Have an app with 2 versions.... iPaint1 (FreeVersion) & iPaint2(Paid Version)
iPaint 2 has extra features along with the features of iPaint1..
if user have iPaint1 & also if he installed Paint2.
Now we need to display An alert when user launch/uses paint2. Alert will be pop up as
"You already have all features of paint1 in this 2nd version, Delete Paint1 to free space"
only if iPain1 is existed in our device, otherwise no need of alert How is it possible.
(I guess we may achieve this this using AppStore ID & Bundle Identifier but not sure and don't know the process)
Thanks in advance
But It is works on simulator but not in iPod
Answer :
Finally i Got solution in #MDT 's answer. thank u #MDT and others as well.
Thank you for your quick response.. This link is useful for this question.
Is it possible to get information about all apps installed on iPhone?
and in
http://www.iphonedevsdk.com/forum/iphone-sdk-development/22289-possible-retrieve-these-information.html#post101753
But It is works on simulator but not in iPod any advice pls.
Without jailbreaking, there is no way for an app to directly get a
list of all installed apps on an iOS device.
http://www.quora.com/An-iOS-App-how-to-find-all-other-application-on-the-iPhone
Your best alternative may to be use of custom URL schemes. With these you can implement a link in your free app that opens the paid one if it is installed.
You should use custom URL scheme. Provide some custom URL to free App. Now on the starting of paid App, check if it can responds to the custom URL of your free App. If it can, there exists a free version on the device and display the message to remove it.

Does iTunes pass referral parameters on iPhone once app is installed?

Is there any provision in iOS wherein the referral parameters used to start the iTunes application are passed on to the application on its first run?
For example in Android, if I use a link such as http://market.an......com.company.pany&referrer=heythere to download an app on Android and actually install the app, the Market app passes the "referrer" parameter and its value to the app on its first run, which the app can use to any extent.
Is there a similar provision in iOS?
We also struggled with this when we built our last mobile app, Kindred Photobooks. The best way we found is to basically bundle that information in the link and use fingerprinting to make that data available after install, which is working really well.
You can try to build fingerprinting in in house. Basically the steps would be the following:
1. When a link gets created, appending parameters to the link, or create a link reference in some backend database if you want shortened links
2. When a user clicks on that link, collect a fingerprint of their device from everything you can read in the browser (for example: IP, OS, screen size, etc) and redirect that user to the app store.
3. When the app opens, create a similar fingerprint from the same parameters collected in app, and match it up in your database to the outstanding fingerprint.
4. If there is a match, you can return those link parameters to the app through install.
Alternatively, if you don't want to build all that infrastructure and handle the many edge cases, we bundled it up into a free service called Branch. Check it out at http://branch.io
No, there is no such thing on iOS. But you can and should file a feature request at bugreport.apple.com, if you really need this feature.
As of iOS6, if someone installs your applications via a smart banner, you can pass a url to your app on startup. You do this by using the app-argument parameter:
A URL that provides context to your native app. If you include this, and the user has your app installed, she can jump from your website to the corresponding position in your iOS app. Typically, it is beneficial to retain navigational context because:
It should work on install:
When the app finishes downloading [after clicking install on an app banner], the View button changes to an Open button, and tapping the banner will open the app while preserving the user’s context from your website.
More here: http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html
I think this will work (but the jury is still out: Does app-argument on Apple Smart Banner get passed to app on install? ), but testing this is tough: How to test Smart App Banner Urls on in Dev environment
No, AppStore doesn't pass any parameters to application - it just unzips ipa to application folder (container).