文档章节

iOS开发之诱导用户为自己的App评论功能

 北方人在上海
发布于 2016/05/18 10:22
字数 1369
阅读 23
收藏 0

"由于我自己的App下载量少,评论也少,出于App的aso优化,想尽办法,而评论是aso里边比较重视的一块,前面的版本都没有诱导用户评论的这一功能,导致有些被动。"

由此自己简单的封装了该功能,下面我们先看看效果图:

blob.png

弹出试图并没有做什么处理,就是系统的8.0以前用的UIAlertView8.0以上用的UIAlertController

具体的一些算法,都可以看代码,闲话不多说,直接贴码

新建一个NSObject的类命名为LBToAppStore 具体代码如下

.h文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#import #import @interface LBToAppStore : NSObject{

    #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_8_0

 

    UIAlertView *alertViewTest;

 

    #else

 

    UIAlertController *alertController;

 

    #endif

 

}

 

@property (nonatomic,strong) NSString * myAppID;//appID

 

 

 

- (void)showGotoAppStore:(UIViewController *)VC;

 

@end

.m文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

#import "LBToAppStore.h"

 

@implementation LBToAppStore

 

 

- (void)showGotoAppStore:(UIViewController *)VC{

    //当前版本号

    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

    float appVersion = [[infoDictionary objectForKey:@"CFBundleShortVersionString"] floatValue];

    //userDefaults里的天数

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    int udtheDays = [[userDefaults objectForKey:@"theDays"] intValue];

    //userDefaults里的版本号

    float udAppVersion = [[userDefaults objectForKey:@"appVersion"] intValue];

    //userDefaults里用户上次的选项

    int udUserChoose = [[userDefaults objectForKey:@"userOptChoose"] intValue];

    //时间戳的天数

    NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];

    int daySeconds = 24 * 60 * 60;

    NSInteger theDays = interval / daySeconds;

 

    //版本升级之后的处理,全部规则清空,开始弹窗

    if (udAppVersion && appVersion>udAppVersion) {

        [userDefaults removeObjectForKey:@"theDays"];

        [userDefaults removeObjectForKey:@"appVersion"];

        [userDefaults removeObjectForKey:@"userOptChoose"];

        [self alertUserCommentView:VC];

    }

    //1,从来没弹出过的

    //2,用户选择????我要吐槽,7天之后再弹出

    //3,用户选择????残忍拒绝后,7天内,每过1天会弹一次

    //4,用户选择????残忍拒绝的30天后,才会弹出

    else if (!udUserChoose ||

    (udUserChoose==2 && theDays-udtheDays>7) ||

    (udUserChoose>=3 && theDays-udtheDaysudUserChoose-3) ||

    (udUserChoose>=3 && theDays-udtheDays>30))

    {

        [self alertUserCommentView:VC];

 

    }

 

}

 

-(void)alertUserCommentView:(UIViewController *)VC{

 

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {

 

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    //当前时间戳的天数

    NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];

    int daySeconds = 24 * 60 * 60;

    NSInteger theDays = interval / daySeconds;

    //当前版本号

    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

    float appVersion = [[infoDictionary objectForKey:@"CFBundleShortVersionString"] floatValue];

    //userDefaults里版本号

    float udAppVersion = [[userDefaults objectForKey:@"appVersion"] intValue];

    //userDefaults里用户选择项目

    int udUserChoose = [[userDefaults objectForKey:@"userOptChoose"] intValue];

    //userDefaults里用户天数

    int udtheDays = [[userDefaults objectForKey:@"theDays"] intValue];

 

    //当前版本比userDefaults里版本号高

    if (appVersion>udAppVersion) {

        [userDefaults setObject:[NSString stringWithFormat:@"%f",appVersion] forKey:@"appVersion"];

    }

 

    alertController = [UIAlertController alertControllerWithTitle:@"致开发者的一封信" message:@"有了您的支持才能更好的为您服务,提供更加优质的,更加适合您的App,当然您也可以直接反馈问题给到我们" preferredStyle:(UIAlertControllerStyleAlert)];

 

    UIAlertAction *refuseAction = [UIAlertAction actionWithTitle:@"????残忍拒绝" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {

 

    [userDefaults setObject:@"1" forKey:@"userOptChoose"];

    [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)theDays] forKey:@"theDays"];

    }];

 

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"????好评赞赏" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {

 

    [userDefaults setObject:@"2" forKey:@"userOptChoose"];

    [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)theDays] forKey:@"theDays"];

 

    NSString *str = [NSString stringWithFormat:

    @"https://itunes.apple.com/cn/app/id%@?mt=8",

    self.myAppID ];

 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

 

    }];

 

    UIAlertAction *showAction = [UIAlertAction actionWithTitle:@"????我要吐槽" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {

 

    if (udUserChoose30) {

    [userDefaults setObject:@"3" forKey:@"userOptChoose"];

    [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)theDays] forKey:@"theDays"];

    }else{

    [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)(theDays-udtheDays+3)] forKey:@"userOptChoose"];

    }

    NSString *str = [NSString stringWithFormat:

    @"https://itunes.apple.com/cn/app/id%@?mt=8",

    self.myAppID ];

 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

    }];

 

 

    [alertController addAction:refuseAction];

    [alertController addAction:okAction];

    [alertController addAction:showAction];

 

    //        NSLog(@"%@",[userDefaults objectForKey:@"appVersion"]);

    //        NSLog(@"%@",[userDefaults objectForKey:@"userOptChoose"]);

    //        NSLog(@"%@",[userDefaults objectForKey:@"theDays"]);

 

    [VC presentViewController:alertController animated:YES completion:nil];

 

    }else{

        #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_8_0

        alertViewTest = [[UIAlertView alloc] initWithTitle:@"致开发者的一封信" message:@"有了您的支持才能更好的为您服务,提供更加优质的,更加适合您的App,当然您也可以直接反馈问题给到我们" delegate:self cancelButtonTitle:@"????残忍拒绝" otherButtonTitles:@"????好评赞赏",@"????我要吐槽", nil];

        [alertViewTest show];

        #endif

    }

 

}

 

#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_8_0

 

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

 

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    //当前时间戳的天数

    NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];

    int daySeconds = 24 * 60 * 60;

    NSInteger theDays = interval / daySeconds;

    //当前版本号

    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];

    float appVersion = [[infoDictionary objectForKey:@"CFBundleShortVersionString"] floatValue];

    //userDefaults里版本号

    float udAppVersion = [[userDefaults objectForKey:@"appVersion"] intValue];

    //userDefaults里用户选择项目

    int udUserChoose = [[userDefaults objectForKey:@"userOptChoose"] intValue];

    //userDefaults里用户天数

    int udtheDays = [[userDefaults objectForKey:@"theDays"] intValue];

 

    //当前版本比userDefaults里版本号高

    if (appVersion>udAppVersion) {

        [userDefaults setObject:[NSString stringWithFormat:@"%f",appVersion] forKey:@"appVersion"];

    }

 

    switch (buttonIndex) {

        case 0: //残忍的拒绝

        if (udUserChoose30) {

            [userDefaults setObject:@"3" forKey:@"userOptChoose"];

            [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)theDays] forKey:@"theDays"];

        }else{

            [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)(theDays-udtheDays+3)] forKey:@"userOptChoose"];

        }

        break;

        case 1:{ //好评

            [userDefaults setObject:@"1" forKey:@"userOptChoose"];

            [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)theDays] forKey:@"theDays"];

            NSString *str = [NSString stringWithFormat:

            @"https://itunes.apple.com/cn/app/id%@?mt=8",

            self.myAppID ];

 

            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

        }

        break;

        case 2:{ //不好用,我要提意见

            [userDefaults setObject:@"2" forKey:@"userOptChoose"];

            [userDefaults setObject:[NSString stringWithFormat:@"%d",(int)theDays] forKey:@"theDays"];

            NSString *str = [NSString stringWithFormat:

            @"https://itunes.apple.com/cn/app/id%@?mt=8",

            self.myAppID ];

 

            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

        }

        break;

 

        default:

        break;

        }

    //    NSLog(@"%@",[userDefaults objectForKey:@"appVersion"]);

    //    NSLog(@"%@",[userDefaults objectForKey:@"userOptChoose"]);

    //    NSLog(@"%@",[userDefaults objectForKey:@"theDays"]);

 

}

 

#endif

 

 

@end

具体使用方法如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#import "ViewController.h"

#import "LBToAppStore.h"

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}

 

-(void)viewDidAppear:(BOOL)animated{

 

    //用户好评系统

    LBToAppStore *toAppStore = [[LBToAppStore alloc]init];

    toAppStore.myAppID = @"1067787090";

    [toAppStore showGotoAppStore:self];

 

}

 

 

@end

© 著作权归作者所有

共有 人打赏支持
粉丝 22
博文 187
码字总数 265578
作品 0
浦东
iOS Simulator功能介绍关于Xamarin IOS开发

iOS Simulator功能介绍关于Xamarin IOS开发 iOS Simulator功能介绍 在图1.38所示的运行效果中,所见到的类似于手机的模型就是iOS Simulator。在没有iPhone或iPad设备时,可以使用iOS Simulat...

大学霸
2015/04/17
0
0
iOS 终于支持了 PWA,一起来认识一下这个强化版「小程序」 | 科普

iOS 终于支持了 PWA,一起来认识一下这个强化版「小程序」 | 科普 发布于 2018-04-13 文章被以下专栏收录

少数派
07/06
0
0
(转)直接拿来用!最火的iOS开源项目(一)

AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目。AFNetworking是一个轻量级的iOS、Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库。它建立在...

孙启超
2013/06/21
0
0
(转)直接拿来用!最火的iOS开源项目(二)

“每一次的改变总意味着新的开始。”这句话用在iOS上可谓是再合适不过的了。GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目...

孙启超
2013/06/21
0
1
挖掘安卓宝藏,EMUI会让手机进入“量心定制”时代吗?

如果把移动终端的发展历程看做一部戏剧,那么Android和iOS两种操作系统生态之间的竞争一定是最精彩的一折。 从市场占有率来看,2017年Android手机在全球售出的手机中占据了85.9%份额,其中自...

脑极体
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

180.mariadb 主从复制

参考:https://blog.csdn.net/chengxuzaza/article/details/62042920 睡觉睡觉,明天写 1.效果 当主库中数据有变化的时候,从库就自动同步 2. 环境要求 至少两台 linux服务器 (教程:https...

Lucky_Me
7分钟前
0
0
erlng file id3v1 id3v1.1

%% ---%% Excerpted from "Programming Erlang",%% published by The Pragmatic Bookshelf.%% Copyrights apply to this code. It may not be used to create training material, %% ......

xueyuse0012
8分钟前
0
0
RabbitMq的安装

环境Centos6.5 32位 JDK 1.7.8 Jdk的卸载 rpm -qa|grep jdk yum –y remove 上边的安装包 JDK的安装 Rpm –ivh jdk安装包 配置环境变量 export JAVA_BIN=/usr/java/jdk1.7.0_80/bin export J......

DemonsI
12分钟前
0
0
http和https协议

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,中文含义为“超文本传输协议在安全加密字层”,简单来说就是加密数据传输,通俗的说就是安全连接。 HTTPS安全超文本传输...

寰宇01
18分钟前
0
0
vue内引入语音播报功能

在vue项目中引入语音播报,使用的科大讯飞语音接入, 具体思路为每次接收到语音信息后存入一个数组,然后监听这个数组,开始冲第一个索引播放,并且同时根据vuex getter 来动态删减数量 给a...

originDu
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部