How do you prompt the user to rate your iphone app without waiting for them to delete the app? - iphone

I am referring to the popup window that asks the user to submit a review/rating.
I know it can be done since the Aardark app does it...it asks several times in fact! (Almost too spammy.) But there has to be an API to trigger the rating request? Google is giving me no love on this one.

I would check out the Appirater project that Arash Payan has put together.
Pretty much handles the checking and displaying of the "rate my app" prompt, and brings the user right into the review portion of your app on the App Store.
It's a very clean, and elegant way to provide that minimum barrier so that your users are more likely to submit reviews of your app.
Hope this helps...

I have written about a way to open right into the review panel of the App Store.
http://www.memention.com/blog/2009/09/03/Open-Reviews.html
The actual code part if called through a button press could look like below
- (IBAction)gotoReviews:(id)sender
{
NSString *str = #"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa";
str = [NSString stringWithFormat:#"%#/wa/viewContentsUserReviews?", str];
str = [NSString stringWithFormat:#"%#type=Purple+Software&id=", str];
// Here is the app id from itunesconnect
str = [NSString stringWithFormat:#"%#289382458", str];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}

I wrote a library to do this - similar to Appirater but a bit more configurable and with Mac App Store support:
https://github.com/nicklockwood/iRate

I have discovered the most subtle value of S.O. (already obvious to all elementary school teachers) --- often by simply forming your question, your neurons rearrange and you are more successful at answering it yourself! (Either that or Google optimized my search after spying on my keystrokes and indexing my question on S.O.)
Answer found after more productive googling:
http://www.mobileorchard.com/fighting-back-against-the-app-stores-negative-rating-bias/

this may not be what youre looking for EXACTLY but what i would do is just prompt them in the app somehow and somewhere not too annoying with a button or alert view and have that button link them to app url in safari which opens the appstore to your app. you can use the url http://www.itunes/apps/ (your app) as i believe is the synthax. i cant remember the exact code but i can get it for you if need it.

We AskingPoint have another way to do it (Im a founder) that provides BOTH App Analytics and the rating widget. You can adjust server side settings based on your analytics to prompt only your best users. Change settings on the fly. And it's translated into over 30 languages.

I wanted to do this when I roll the app out for the first time... looks like I'll have to wait and put it out as an update to ensure that it will work... let me know if I am wrong and there is some way I can test this before submitting to apple for distribution.

Related

Opening external application inside my application

Can I invoke another installed applications within my application? Suppose I have installed AngryBirds, I have to invoke that application by tapping a button from my application. Is it possible?
You can do it if the application in question has a defined protocol, in example if you want to call a number via skype you can perform an action like
NSString *contactName = #"user123";
NSURL *skypeURL = [NSURL URLWithString:[NSString stringWithFormat:#"skype://%#?call", contactName]];
if ([[UIApplication sharedApplication] canOpenURL:skypeURL]) {
[[UIApplication sharedApplication] openURL:skypeURL];
} else {
// Display to the user how to install skype.
}
the same can happen for other programs which have a protocol definition that could be understood.
And just 4 the record, here's a list of know URL Schemes
http://wiki.akosma.com/IPhone_URL_Schemes
Then, if you want your app to be URL-Scheme Compatible, you can have a good start by reading this:
http://www.idev101.com/code/Objective-C/custom_url_schemes.html
and this other post is really good and detailed.
How do you set your Cocoa application as the default web browser?
it explains how to make your app handle a custom URLScheme, which turns out to be your case.
hope it could be helpful.
k
for other case scenarios I got no idea if it is possible.
No, it's not possible to do that, unless the apps in question support URL Scheme, then you can launch it using URL.
Not possible, because all iphone apps will run in a different individual process with their own runtime environment. There is only a limited IPC(Inter process communication) available, that too for system libs and resources.
No. There is no way to open an another app within app. However you can open an different app from your app vise versa by using
URL Scheema
Open_In functionality using CFBundleDocumentTypes and UIDocumentInteractionController.

Alert for reminding the user to rate the app

As you may have seen in some apps an alert pops up asking the user to rate the app in itunes and usually the alternatives you get to choose from is something like: Sure which opens the rate page for the app. The second option is No Thanks which closes the alert and the third option usually is maybe later which displays the alert later.
I was wondering how to do this.
I want the alert to be displayed after say the app has launched 20 times if that would be possible.
And how can I create an maybe later alternative which displays the alert maybe 15 launches of the app later?
And a final question is there a special link for the apps rate page? So when you click the sure button or whatever it will take your directly to the rate page.
I've used this: https://github.com/arashpayan/appirater. You can look at my fork as well for a specific mod I needed.
[EDIT: comment re NSUserDefaults]
I suggested this link because it is a full, working implementation of what you describe that is easily integrated into existing apps. I've used (and modified) it myself. NSUserDefaults is a general purpose mechanism for persisting app state. I agree with the others that it's a very useful thing to learn and use, it's just not a full answer to your question. If you choose to roll your own implementation of a rating system (nothing wrong with that) you will most likely use NSUserDefaults to store the relevant info.
Check out my answer for this similar question. I provide two different links you can use for taking the user to the "rate this app" screen in the App Store.
Direct "rate in iTunes" link in my app?
You can use NSUserDefaults to save the launch count (increment it in application:didFinishLaunchingWithOptions:), then save the user's choice another preference key. If the user says later, you could reset the counter back to zero.
I don't think there is a special rating link, but you can link to your app's specific App Store page. This was incorrect, as TomSwift points out; see Direct "rate in iTunes" link in my app?
I wrote a library for doing this with minimal effort on your part:
https://github.com/nicklockwood/iRate
I'd recommend using a library rather than rolling your own solution. It may seem like a simple problem but the library takes care of a whole bunch of extra stuff, like ensuring that the user is prompted for each new installed version, that they are reminded after a certain time if they decline, that they aren't prompted to go to the app store unless they have a network connection, etc.

Twitter button in iOS

How do I put a Twitter button in my iOS app so the user can tweet their score?
Take a look at ShareKit: http://www.getsharekit.com/
It's pretty self explanatory, with documentation on the website
And it offers more than twitter, if you want it.
Just saw this question and thought I'd point out that with the upcoming iOS 5, there will be native Twitter support for every app. No technical/implementation details yet, obviously, but if you care to wait for a while you can get your hands on a native library, which will probably make your life a lot easier!
http://www.appleinsider.com/articles/11/06/09/inside_apples_ios_5_built_in_twitter_integration_makes_tweeting_a_snap.html (one source of many)
For anyone still interested, just read an awesome post on exactly this issue. See link for a step by step guide. He couldn't have made it any any easier :)
http://buildinternet.com/2011/10/tweet-sheet-creating-a-popup-tweet-in-ios-5/
Another option: DETweetComposeViewController
Works with iOS 4 and later.
Just check this blog post out for Twitter integration in iOS 5.
The advantage of using the tweet sheet is that it’s built right onto iOS, this means lots of things:
Standard interface throughout the OS
Automatic use of the user’s system Twitter account
Automatic check for a tweet less than 140 characters long
Easy image and link attachments
Easy to program, no need to implement OAuth or connect to the Twitter backend
As you can see we have lots of advantages and incentives to use this and, being that it’s so simple, there’s no excuse not to include Twitter functionality in your applications!
Just include the header file #import "Twitter/Twitter.h"
and add the framework Twitter.framework in the project..
and add the below lines for a button action
TWTweetComposeViewController *tweeter = [[TWTweetComposeViewController alloc] init];
[tweeter setInitialText:#"your score"];
[self presentModalViewController:tweeter animated:YES];
That all.. ur score will be posted...
If u want to add picture use [tweeter addImage:image ];
If u want to add url use [tweeter addUrl:#" your url"];
You can add an EasyTweet button to the app and where it says "Hello. This is a tweet." just add in the relevant content, ie "Just scored 42 points on YourApp.". This will be found in the ViewController.m file.

Remotely Closing the App

I have a button in my UI and was wondering if you are able to close the app and exit to the homescreen if you press it. Thanks!
You can always call exit(0) but it is against Apple's design guidelines to close applications programatically. The recommended way is when the user press the home button.
I don't know your thoughts for doing this, but
try explaining why or at least think it over again :)
A snippet from the HIG
iPhone applications should never quit
programmatically because doing so
looks like a crash to the user. There
may be times, however, when external
circumstances prevent your application
from functioning as intended. The best
way to handle this is to display an
attractive screen that describes the
problem and suggests how users can
correct it. This helps users in two
ways: ■ It provides feedback that
reassures users that there’s nothing
wrong with your application ■ It puts
users in control, letting them decide
whether they want to take corrective
action and continue using your
application or press the Home button
and open a different application
This method works also [[UIApplication sharedApplication] terminateWithSuccess];, but as mentioned shouldn't be used for distribution on the AppStore.

How to find a call is unanswered in iphone

If i make a call from an application using
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:#"tel://1234567890"]];
How can i check if the call is answered or unanswered
Thanks,
You cannot check this. When this URL is opened your application will be closed and phone app will be launched. Since you cannot access calls data from your app there is little you can do. This may be possible in jailbroken iPhone.
Pop up a dialog when the app re-opens asking the user if the call went through. You better have a good reason for wanting to know though or the user will be mighty annoyed!
Otherwise you are out of luck.
Not an iPhone app developer but is it possible to query the phone log the next time the app loads and check time on call or something and if it is over 20 seconds consider it completed or something like this?
There is no access to the iPhone phone from third party software. Luckily.
you can reffer
How can I check missed call in iPhone using Objective-C?