应用场景
我们的 App 需要在 AppStore 上面打开某个 App 或者游戏, 目的最常见的有:
1.评分评论.
2.推荐下载(App 或者游戏).
很多开发者知道打开 AppStore 只需要一句代码:
1 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itunes app url"]]; |
这样就很简单的打开 AppStore 了, 但是产品经理问了, 能在我们应用内打开 AppStore 吗?
你当时懵逼了吗?
不要懵逼, 以后只要遇到类似这种问题, 你就问产品经理哪个 APP 这样做了?
然后, 他就给你看别人家的效果, 你就理直气壮地说: “别人可以做到的, 我们也可以做到!”.
应用内打开 AppStore 也很简单.
在 iOS6之后, 苹果已经给我们提供了 SKStoreProductViewController, 大家看一下文档, 你就笑了.
1 | SKStoreProductViewController |
应用内打开 AppStore
这里我以在应用内打开 微信
为例子.
效果图如下:
从效果图可以看出, 用户在自己的应用内打开 AppStore 后, 不仅可以下载或者打开微信, 还可以直接评论评分, 简直爽(也难怪产品经理这么干).
那我们说一下如何实现上面的效果.
实现方案和步骤
1.包含头文件 #import <StoreKit/StoreKit.h>
2.实现 SKStoreProductViewControllerDelegate
具体代码:
1 | - (void)openAppFromAppStore:(NSString *)appid |
调用(@”414478124” 是 微信 的)方式:
1 | [self openAppFromAppStore:@"414478124"]; |
修改 AppStore 的导航栏
产品经理说, 既然你已经实现了上面的功能, 看看能不能把 AppStore 的导航栏改一个牛逼的颜色, 就像上面的大红色.
~
可以, 干!
直接上代码:
1 | - (void)openAppFromAppStore:(NSString *)appid |
注意事项
1.打开 SKStoreProductViewController
目前只能使用 present
方式, 不可以使用 push
的方式.
否则会报错:
1 | //Terminating app due to uncaught exception 'SKUnsupportedPresentationException', |
2.加入 loading
在应用内打开 AppStore, 为了不让用户傻等(网络不好的时候, 打开很慢), 可以加入 loading, 缓解一下用户急躁的心情.