Can we send email through gmail or yahoo clients in iPhone sdk - objective-c

I want to send email through gmail or other message clients,is it possible in iOS.
I searched a lot but didn't find anything.
I don't want to use the default composer to send mail.I wants user to choose whether they want to send emails from the default mfmailcomposeviewcontroll or can send through gmail,yahoo.

There are a few ways in which 3rd-party developers may offer this functionality -- regardless of the manner selected, it is up to the 3rd-party vendor to decide how much (if any) of these methods are implemented and documented in the public domain as accessible to other applications or users. Ultimately you will need to consult the target product's documentation or support channels to determine if such mechanisms exist. While this is neither an exhaustive list, nor it is a list of formally supported mechanisms for achieving your goal, it should give you some insight into what to go research or ask additional questions about:
Option 1: Open URL Schemes
iOS Developers can register their applications to respond to a URL scheme like "tel://" or "sms://" or "http://". If vendors register a URL scheme it will be visible in the app's info.plist. While it won't speak to the format of any parameters you need to pass, the vendor's documentation or support personnel may be able to shine a light on those capabilities. For the HTTP scheme, iOS' MobileSafari.app is registered to respond -- the well-formed NSURL that gets passed to Safari is used as the URL to which Safari navigates when launched.
Option 2: 3rd-party SDK
Other vendors may elect to make an SDK available that you can implement in your app. Google Drive, Dropbox, and Facebook are all great examples. To incorporate these cloud filesystems or social capabilities in your own apps, you can register as a developer and follow install guides to both adopt their SDK and leverage the functionality the SDK provides.
As for your specific question, it appears as though Google's official Gmail app does have an undocumented URL Scheme that the community has discovered, reverse-engineered, and written up. While I VERY STRONGLY DISCOURAGE use of undocumented app capabilities there is nothing preventing you from using this functionality. Keep in mind that because this is undocumented, there is a distinct possibility that the feature could be removed, changed, or otherwise made unavailable in future builds that can leave your own app in a bit of a bind. Furthermore, for those of your users that do not have the Gmail app installed would not be able to leverage this URL Scheme and could lead to a poor user experience. All that said, with the caveats above, Tom Scotland has written up a series of blog posts on the Gmail app's URL scheme and updates to the scheme as a function of the rest of the Google constellation of iOS apps - http://tom.scogland.com/blog/2013/01/29/gmail-url-scheme/
Yahoo Mail is a separate issue -- As far as I can tell, this app offers neither of these access options, however I'll leave the digging as an exercise for the OP.
Again, I encourage you to use MFMailComposerViewController instead of unofficial or unapproved app capabilities so as to limit your own app's exposure to changes beyond your control.

Related

For Dropbox API is there a way to pull a list of users and see if MFA is enabled?

I am wanting to pull all users in my company dropbox and then check to see if their accounts have MFA enabled. I read over the documentation for Dropbox api but did not see anything stand out where this was possible.
It's very sad to realize that a popular platform such as Dropbox doesn't expose A LOT of basic features through its API (and the SDK itself is far from being OK, compared to G-Suite). Anyway, there are two hacky methods you can use in order to pull out that information (with some limitations).
First method:
By analyzing the team events using team_members_list() you can filter out tfa_change_status_details events. When new_value=TfaConfiguration('[sms|other]', None) is specified - 2FA is enabled.
The information I found out that can be retrieved using this method is:
has_2fa - whether 2FA was ever configured.
is_tfa_enabled - whether 2FA is currently enabled.
tfa_type - whether 2FA is by SMS or by app.
However, keep in mind that you have to track changes constantly and also keep in mind that Dropbox saves team events for only two years.
Second method:
Using the front-end dashboard API this information can be retrieved (I can't remember the API name, I think that it is /2/get_multifactor and inside you'd find some information about its status and the organizational policy regarding 2FA). However, to use the front-end dashboard API (which is totally undocumented) you'd need to simulate a successful login (and correctly use the lid and jar cookies) and you'd also need to bypass the random captcha that appears when you abuse the service with too many requests.
To be honest, Dropbox's API is weak, neglected, and ugly. I wish I never had to use it. Anyway, I would recommend using the first method and pray for a significant update to the API
No, unfortunately the Dropbox API doesn't expose this. We'll consider it a feature request.
There's a feature request open for this one (https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/MFA-status-for-users/m-p/468564#M23886). But I wouldn't hold your breath, as #Aviv mentioned the Dropbox API seems surprisingly neglected at the moment.

How to get third-party API up-to-date?

So, I stepped once at this problem. I had offered a website that used the SoundCloud API. Everything worked properly. Content was extracted from the JSON and placed in the layout of the website. However, I received an email one day from the owner of the website, which indicated that the website did not work properly. I then came out to investigate and came to the conclusion that the "problem" was not on my side, but at SoundCloud's side. I studied on the API page of SoundCloud and came to the conclusion that the API had received a major update, making the link with SC and the site no longer worked.
Lately I'm trying many new APIs to, including those from Instagram and Dribbble. I was therefore wondering if it is at all possible to ensure that such problems can be reduced in the future or it might be appropriate API pages of this third-party APIs to monitor?
There's no "right" answer. After many years of using and maintaining many APIs here are some of the conclusions I've come to:
The best providers let you work with a specific version of their API whose interface and expected behavior never changes. They might release bug fixes and new endpoints, but you can be confident that as long as the API is supported it will not break your system.
A good provider will provide an end-of-life date for each version of their API. It's up to you to keep track of when you need to update.
Paid services will often be supported longer than free services. Plus the contract / SLA will guarantee it remains available for a specific amount of time.
The most popular APIs often have mailing lists and/or blogs. For those that offer it, sign up to be notified of updates. For those that don't you'll have to monitor their blogs or news posts. And I suggest not using any service that would drop support for an API version without warning.

Nature of Intellij Integrations

When installing the latest intellij, I was reading the privacy policy and came across this:
We use third party service providers as discussed in this section. We also use third party service providers in other circumstances; a complete list of the reasons in which we use third party service providers can be found here.
The word "here" links to this page, which as of this writing contains only a list of links to other privacy policies, and NO information about how these 3rd parties are used or what data is shared with them (despite the text in the policy itself claiming the page contains this information).
Does anyone know HOW and WHEN the following services (copied from the above wiki page in case it changes) are used by Intellij?
Survey Gizmo
Statwing
QuickTap Survey
Facebook
Google
Microsoft
LinkedIn
Yandex
Twitter
Adyen
Crazy Egg
The survey ones are fairly obvious what's probably going on, but what data, is shared and under what circumstances with some of the others could be important. In some cases folks might be working on projects meant to be kept secret, or might have personal or ethical reasons to avoid having a presence on some of those services. Without knowledge of which features send data to these providers, and what data is sent it's hard to agree to the policy.
One might also argue that the failure to specify as claimed in the policy means they don't get to send any data, but nobody wants to bother with that legal mess... particularly since they could change their wiki after the fact, and then one has to prove what it said at the time etc. The alternate argument is that the lack of specification implies they might share any and all data...
Does anyone know of better information about how Intellij uses these providers? Googling just got me lots of links on how to install Facebook SDK etc...
The privacy policy page shows links to the privacy policies of services used by the JetBrains Web site, marketing activities etc. As of version 2016.2 and all earlier versions, IntelliJ IDEA does not connect to any of those services, or send any data to them, from the product itself. I (a member of the JetBrains management team) am also not aware of any plans to start doing so in the future.
(Note that third-party plugins not developed by JetBrains do sometimes use those services.)
None of our downloadable IDE's or tools send back any sort of confidential information at all. The only information that is sent is anonymous usage data and ONLY with the consent of the user. Even accepting the Privacy Policy does not imply you have to send back data. It's completely opt-in.
Beyond that, the only other information sent is performance data, exceptions and other information which again requires explicit user action and consent.
The Privacy Policy covers every software and service we provide at JetBrains, including but not limited to our installable tools, services, our web sites, surveys we may run etc. The services you mention are all related to our web site, e-shop, social media promotions, any advertising campaign and/or any surveys we may run. Our tools do not use any of those services.
Concurring with my colleague Dmitri, we do not however control what individual plugins may or may not do.
We do appreciate your feedback however and we will take steps to make it clearer on the page.

Clarify the meaning of APIs

An application-programming interface (API) is a set of programming instructions and standards for accessing a Web-based software application. Could someone explain to me in case of Google maps or Youtube which is the API and which is the software application? Are both visible to us and how? I know there are tons of articles out there, however I cannot clarify the above. APIs are like the waiters that transfer data among different machines. Okay, which exactly is the Google maps API and how do we call/use it? And which is the Google maps software application which is accessed by the API? When we write for example http://maps.google.co.uk/ do we call the API? My query may seem silly but I cannot find a good answer for that.
An application-programming interface (API) is a set of programming
instructions and standards for accessing a Web-based software
application.
Firstly, an API is not just for web-based software. Even your computer's OS provides APIs for hardware and software installed in the box.
For your question, an API is a method (code instructions) to connect your application to the features of another system. Allowing your application to use thay system's features as provided via the API.
Could someone explain to me in case of Google maps or Youtube which is
the API and which is the software application?
In the case of Youtube... Let's say you are making some Android video player app that you also want to be able to playback Youtube videos within that app. The software application is your own Android player code and to access the Youtube data you would use Youtube's Android API.
An example of using the API is this module : YouTubePlayer which as you can see provide API commands like loadVideo(String videoId, int timeMillis). Where videoId is the Youtube ID and timeMillis is the desired start time within the video).
When we write for example http://maps.google.co.uk/ how do we call the
API?
That's not how you would call the API. You must first visit the documentation of the API to see how it's expected to call features within your own app.
Google Maps : https://developers.google.com/maps/documentation/
Let's assume now you're coding a Javascript app, you can see the commands here as a startng point. There is also an example page showing code & result.
Simple terms:
API = the waiter
Application Software = the chef
You order from the waiter. The waiter brings it to the chef. The chef prepares the food. The waiter then brings you your food. Then you figure out what to do with the food; eat it, take it home, throw it on the floor, let your dog eat it, give it the homeless, etc...
A website, app, etc... would send an API request (your order with the waiter) to Google Maps (the chef). If your API request is valid, Google Maps will send back an response (your cooked food with the waiter). Then the website or app takes the returned data and displays it in their custom way to you.
In the case of Google Maps, apps like Yelp and others use Google Maps' API to request specific data; routes, addresses, etc… and then they display it on their app.
To make an API request/call you have access to use the API, format it correctly, and figure out what to do when Google sends a response back : https://developers.google.com/maps/documentation/
API is a set of functions and procedures that allow the creation of applications which access the features or data of an operating system, application, or other service.
An API is like building block for your application. Multiple API's can exchange data without knowing the other's implementation. In a good design pattern , we should design API's for different independent tasks and then merge them.
Google Maps API
This is the google maps API which a developer can use to develop his own piece of software.
Whenever we use any software and it's different features, we might be using their API's without generally knowing of them.
A software application is always visible to us, but an API is visible only if the developer wants to expose it for community use.
EDIT
Using Google maps API
This link has the documentation and examples on how to use the google maps API using javascript.
Hope it helps!
When you use software, web applications included, you are in most cases using a wrapped API. Software developers took the time to take a raw back end API which executes commands on the system, and made these endpoints easy to use for a specific user in an intended universe of discourse, or domain. End users do not have direct access to everything the API has to offer all at once, so it is not "available" in the same sense that it is available to the developers, but it is available in another sense because they are using the API to execute commands on the system by virtue of the Application that was Programmed with that Interface existing and working.
The Google Maps API is used to integrate the power of Google Maps into almost any application. It provides facilities for customization and much more. When you use the Google Maps webapp, it is, to my knowledge, built using many components of the Google Maps API, as are the Google Maps apps for any other platform, such as Android. Does this mean you as a user are using the API? Only through the application; the application talks to the API for you.
“An application programming interface (API) is a set of routines, protocols, and tools for building software applications. An API expresses a software component in terms of its operations, inputs, outputs, and underlying types. An API defines functionalities that are independent of their respective implementations, which allows definitions and implementations to vary without compromising each other. A good API makes it easier to develop a program by providing all the building blocks.
APIs often come in the form of a library that includes specifications for routines, data structures, object classes, and variables. In other cases, notably SOAP and REST services, an API is simply a specification of remote calls exposed to the API consumers.
An API specification can take many forms, including an International Standard, such as POSIX, vendor documentation, such as the Microsoft Windows API, or the libraries of a programming language, e.g., the Standard Template Library in C++ or the Java APIs.
An API differs from an application binary interface (ABI) in that an API is source code-based while an ABI is a binary interface. For instance POSIX is an API, while the Linux Standard Base provides an ABI”.
To speak plainly, an API is the messenger that runs and delivers your request to the provider you’re requesting it from, and then delivers the response back to you.
To give you a familiar example, think of an API as a waiter in a restaurant.
Imagine you’re sitting at the table with a menu of choices to order from, and the kitchen is the provider who will fulfill your order.
What’s missing is the critical link to communicate your order to the kitchen and deliver your food back to your table.
That’s where the waiter (or API) comes in. ”AHEM”
The waiter takes your order, delivers it to the kitchen, and then delivers the food (or response) back to you. (Hopefully without letting your order crash if designed correctly)
Now that we’ve whetted your appetite, let’s apply this to a real API example. In keeping with our theme, let’s book a flight to a culinary capital – Paris.
You’re probably familiar with the process of searching for airline flights online. Just like at a restaurant, you have a menu of options to choose from ( a dropdown menu in this case). You choose a departure city and date, a return city and date, cabin class, and other variables (like meal or seating, baggage or pet requests)
In order to book your flight, you interact with the airline’s website to access the airline’s database to see if any seats are available on those dates, and what the cost might be based on certain variables.
But, what if you are not using the airline’s website, which has direct access to the information? What if you are using online travel service that aggregates information from many different airlines? Just like a human interacts with the airline’s website to get that information, an application interacts with the airline’s API.
The API is the interface that, like your helpful waiter, runs and and delivers the data from that online travel service to the airline’s systems over the Internet.
It also then takes the airline’s response to your request and delivers right back to the online travel service .
And through each step of the process it facilitates that interaction between the travel service and the airline’s systems - from seat selection to payment and booking.
So now you can see that it’s APIs that make it possible for us all to use travel sites. They interface with with airlines’ APIs to gather information in order to present options back to us
The same goes for all interactions between applications, data and devices - they all have API’s that allow computers to operate them, and that's what ultimately creates connectivity.
API’s provide a standard way of accessing any application, data or device whether it is shopping from your phone, or accessing cloud applications at work.
So, whenever you think of an API, just think of it as your waiter running back and forth between applications, databases and devices to deliver data and create the connectivity that puts the world at our fingertips. And whenever you think of creating an API,
--MuleSoft

How to create a Web Intent service for my own site?

Twitter offers 'web intents' that are an alternative to OAuth access to their API. Basically, this provides a less feature rich experience, but can still be quite handy. User clicks on 3rd parts websites can create popup windows that check whether the user is logged in to twitter and if they are, allows them to us some Twitter features such as tweeting, retweeting, or following users.
My question is, how could I go about implementing an API like this? Are there tutorials or libraries? I'm not sure what technologie(s) power web intents or where I should start searching.
Thanks.
You can read more about web intents at webintents.org and read the W3C's draft spec. As far as I know, web intents are still somewhat of a new beast on the web and they have not been standardized.
Still, you may want to read this blog which contains a few examples of registering web intents and check out Paul Kinlan's git repo https://github.com/PaulKinlan/WebIntents
Hope that helps you get started.