iOS開發之誘導用戶爲本身的App評論功能

"因爲我本身的App下載量少,評論也少,出於App的aso優化,想盡辦法,而評論是aso裏邊比較重視的一塊,前面的版本都沒有誘導用戶評論的這一功能,致使有些被動。"算法

由此本身簡單的封裝了該功能,下面咱們先看看效果圖:app

blob.png

彈出試圖並無作什麼處理,就是系統的8.0之前用的UIAlertView8.0以上用的UIAlertController優化

具體的一些算法,均可以看代碼,閒話很少說,直接貼碼atom

新建一個NSObject的類命名爲LBToAppStore 具體代碼以下spa

.h文件

1code

2orm

3blog

4ci

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

相關文章
相關標籤/搜索