Any way to detect who all use iPhones in the phone contact list using iMessage related or some similar logic? - iphone

When I send a sms msg to a friend in my phone book which also uses an iPhone, the message goes as iMessage by default.
Using the reverse logic, is it somehow possible to programatically figure out a list of people in my phonebook who use an iPhone?
Actually I have built an iPhone app and I want to provide a feature to let the user share the info about the app with her other iPhone friends if she likes the app. Now since non iPhone friends have no interest with the msg coz they cant use the app, it makes sense to provide the user a list of only iPhone friends whom she can fwd her msg if she wants to. Therefore I want to provide a list of iPhone users from her phonebook only and then let her iMessage them.
How can I achive this?

I read your post several times and can't see a definite question. But I'll try it:
Is it possible to find out, which of my friends are using an iPhone?
Yes and no. If you want to show only persons who downloaded the app, then it's totally possible, but if you want to find this out just by their phone numbers and using official Frameworks it's impossible to reach this.
Is it possible to find out, which of my friends are using iMessage?
No, except they all download your app and enter if they're using iMessage or not.
Again: If you want to get a list of your friends which are using an iPhone, they would need to download your app which collects the data. (It's called WhatsApp)

Related

How do I open the Contacts app Swift

Is there a URL to open the contacts application from within my application? I know you can achieve this with the settings app by using the UIApplicationOpenSettingsURLString constant in Swift; however, I wasn't sure if I could do the same with the Contacts app.
There isn't a deep link for opening the Contacts App.
Apple is very picky when it comes to deep-linking. They have to provide one for Settings since many apps need services like Data, Location, Bluetooth, Wifi, etc.
Unfortunately they do not extend this to the Contacts App.
However if your app needs contact information then for that Apple has provided a Contacts framework to browse through your contacts within your app itself.
Read more about it here.
In order to add/update/delete/merge contacts directly from your app without using the Apple's Contact UI, use the CNSaveRequest APIs. More on that here.
The closest thing you can get to opening a contact is to write them a message in IMessage. From this screen the user can press the contact icon and open the contact page for that particular contact.
You can do this by opening the url sms://+44776382223 where the number is the number of the person that you would like to view the contact of.

How can I check that my iOS app is reviewed & rated by a user or not from my code

If someone reviews my application, is it possible to get an event? I am using a third party library for managing app ratings. It is the most popular iOS rating library called iRate. iRate has an method:
[[iRate sharedInstance] ratedThisVersion]
But it seems, it is not working when I tried to test. Is there any native way to check that my app is reviewed by user or not?
The library iRate stores the fact that a user rated an app in it's user defaults. As a result, you will only be able to tell if a user rated the version once you've actually set the value, using assignment.
Just as a matter of interest, ratedThisVersion is a BOOL property, not a message - so it's [iRate sharedInstance].ratedThisVersion and [iRate sharedInstance].ratedThisVersion = YES; for assignment.
There's no current mechanism in the apple store to determine if the user has rated the app. You can ask for the number of reviews for an app by using the itunes search api (e.g. getting the output from https://itunes.apple.com/lookup?id=364147881 would get the json data for the BBC news app, which as of my checking had an "averageUserRating": 4 and "userRatingCount": 30937).

iPhone url scheme with content body to SMS

I'm a Java/Web developer and I don't know anything about iPhone applications.
I did search on the Internet and the following steps are what I think people suggested but I want to confirm.
I would like to know if the following steps will allow me to send a content body to SMS messages when a user clicks on a link on a web page.
Build an iPhone app that takes content body and receiver phone number.
Make the visitors to my webpage download the iPhone app in #1 (using javascript to check if s/he already has it and a custom url scheme to open the iPhone version of "PlayStore")
The visitor installs the app.
Call the iPhone app in #1 using a custom URL scheme, from a link on a web page. This link contains the phone number of the receiver and a content body
The iPhone app in #1 then opens the native SMS app in iPhone, this time with a body.
Is this
1. possible ?
2. the right way to do ?
EDIT :
To make things clearer, what I need are...
It shouldn't be the web server that sends the SMS. The client who gave us the job does not want to pay for that. The client wants each visitor send their own SMS and pay for it.
I made a mistake. The phone number of the receiver should be empty. Only the content body is pre populated. So if I clicked on the "send SMS to my friends" link(on a webpage), it opens the native SMS application.(at least, this is how it works on android devices currently). And then the visitor would type in or select the phone number of the receiver from the contacts on his device.
No, you cannot open the SMS app with a message body. The only way to send it is by using MFMessageComposeViewController (iOS 5.0+) as shown in this page. If you need to support earlier versions, you are out of luck.
I'm not sure that Javascript can "check" that the device can run a url scheme either (I'm almost certain it can't check what apps are installed), but I'm not an expert at that kind of stuff.
As far as you are launching your application with some data using Custom URL Schemes this might help you calling your app with some parameters
http://www.idev101.com/code/Objective-C/custom_url_schemes.html
For step #5 its not possible
Short Answers:
No.
No. The "right" version would be to send the SMS from your webserver, using something like NowSMS.

Prefill user data just after download and first launch iPhone app

User downloads my iPhone app from the appStore link I provide from invite email. Is it possible to persist/cache the user-data say email Address and pre-fill when the app launched.
Thank you.
You can get all the data that Apple allows you to get, which is absolutely none - you can't get the user's email, you can't get his phone number, you can't get his UDID. No way to identify him. If you want anything from the user, he needs to enter it manually. If you think about it - it's actually a good thing. All your iphone information is completely secure and protected.
No, this can't be done. Your special link might take the user to the app store, but then that's it. The act of installing the app has nothing to do with your link anymore and no data can be passed to the freshly installed app.
Of course once the app is installed, if the user taps on a special link you provide, it could force your app to run and provide data to it.
Maybe you could provide a QR code the use can scan with your app the first time they run it. The QR code can contain the data you want. Of course the user may choose to not scan the code. Then again, the user can install your app without using your link to begin with.

How I verify that user installed an iPhone app?

We provide advertising capabilities to iPhone app customers, where they can advertise apps to millions of users on social network, and stand out among large number of apps in app store.
Now, to prove the ROI, we also want to provide statistics of how many users actually installed the app using our advertisements on social network.
My question is:
How do I verify whether user installed an app (when user clicks on advertisement and we take user to App Store (on mobile device) or itunes page (on PC/Mac) )
Is there a way to integrate with developer's interface to get this information?
Thanks in advance.
This is a broad question and there are some simple solutions which may require some work. Apple provides you no feedback for when an app is installed. Assuming you are storing the click of the ad on a server you will need to match to that click with something you send up when the app is opened for the first time.
(if the ad is shown in a native app on the phone) You can send up a unique key when the click happens and also send that same unique key when the app opens for the first time and match them on the server. This key can be a hashed mac address or something you save to the UIPasteboard. This requires integration on the side of your clients app because they will need to send a http request to you when the app launches.
If the social network is web based then your best bet is to match on IP address which isn't perfect but can give you a high percentage of accuracy.
I guess I'm assuming you are hosting the ads though. If you are not then you will have to rely on what the ad networks give you and many of them can provide some form of install tracking.
Well, you can always look at that persons phone and check if your app is present there :P
Just kidding.
You have some ways to get information such as these.
If you have registration in your app, you can monitor the userInfo, along with the UDID.
You can setup some webservice calls on applicationDidFinishLaunching for the first time events (using NSUserDefaults key to save the first time info) and use that.
Check out FLURRY for data analytics in your app. This is an awesome service, and allows you to track your users and how they interact with your app. I would recommend this !
Most ad networks have conversion tracking capabilities, but once you click an ad from the web and go to iTunes, all hope is lost tracking a conversion.
I guess you'd be able to track a conversion if you require the user to provide information (like an email address) before directing them to the appstore then requiring them to input that same email once the app is opened.