2017-03-28 9 views
6

पर नियंत्रण मैंने अपने ऐपडिलेगेट और आयातित स्टोरकिट में निम्नलिखित जोड़ा है। अपेक्षित के रूप में समीक्षा मोडल लॉन्च पर पॉप अप करता है। मेरा सवाल है, क्या मैं आवृत्ति के प्रभारी व्यक्ति हूं जिसे इसे कहा जाता है या ऐप्पल है? docs अभी भी बहुत हल्का है लेकिन मैंने elsewhere पढ़ा है कि ऐप्पल प्रति उपयोगकर्ता को 3 बार प्रति वर्ष सीमित कर देगा, क्या मैं उन पर भरोसा कर सकता हूं जब यह प्रदर्शित होने पर उचित समय (उचित रूप से कुछ महीनों) को जोड़ सकता है?एसकेस्टोर रिव्यू कंट्रोलर डिस्प्ले फ्रीक्वेंसी

विकास में जब भी मैं ऐप लॉन्च करता हूं, तो मैं अपने उपयोगकर्ताओं के लिए इसे कई बार लॉन्च करने के लिए नफरत करता हूं, फिर 12 महीने के लिए फिर से नहीं पूछता।

अब 10.3 बाहर है मुझे इस बात की रूचि है कि दूसरों ने इसका सामना कैसे किया है।

चीयर्स।

if #available(iOS 10.3, *) { 
     print("Show Review Controller") 
     SKStoreReviewController.requestReview() 
    } else { 
     print("Cannot Show Review Controller") 
     // Fallback on earlier versions 
    } 
+0

मैंने अभी तक कड़ी मेहनत सीखी है कि ऐप्पल साल में समान रूप से 3 बार समान रूप से बाहर नहीं निकलता है। मेरा कार्यान्वयन, ऐप में एक निश्चित कार्रवाई के तीसरे समय के बाद, प्रत्येक बार कॉल अनुरोध (समीक्षा) कॉल करें। रवींद्र। समीक्षा के अनुरोध को तीन कार्यों के बाद हर बार पॉप अप करता है। तीन बार। फिर, एक साल के लिए, माना जाता है। जैसा कि यहां उत्तर में बताया गया है, उपयोगकर्ता डिफ़ॉल्ट आदि में अंतिम अनुरोध प्रयास दिनांक संग्रहीत करना इसे संभालने का एक सौहार्दपूर्ण तरीका होना चाहिए। – Jonny

उत्तर

8

मुझे लगता है कि UserDefaults में संग्रह किया गया है गिनती जोड़ दिया है। यह हर बार एक निश्चित कार्रवाई होती है वृद्धि की जाती है, और जब count % 10 == 0 मैं SKStoreReviewController.requestReview() फोन

यह या समीक्षा अनुरोध को प्रदर्शित नहीं हो सकता है (औसत उपयोगकर्ता संभावना गिनती एक बार एप्लिकेशन के उपयोग के प्रति भी वृद्धि होगी), लेकिन यह ऐसा नहीं है सुनिश्चित करता है अक्सर प्रदर्शित किया जाता है।

वैकल्पिक रूप से, lastReivewAttemptDate और अनुरोधों के बीच न्यूनतम अंतराल को संग्रहीत करने पर विचार करें।

+0

मैंने कुछ ऐसा करने के लिए समाप्त कर दिया है, मेरे पास 5 के प्रारंभिक मान के साथ उपयोगकर्ता डिफ़ॉल्ट में संग्रहीत एक मान है। जब भी उपयोगकर्ता सफलतापूर्वक एक विशेष ऑब्जेक्ट जोड़ता है तो मैं उस उपयोगकर्ता डिफ़ॉल्ट संख्या से 1 को हटा देता हूं, एक बार यह शून्य तक पहुंच जाता है, मैं SKStoreReviewController.requestReview को कॉल करता हूं() और मान को रीसेट करें 5. –

+0

@FaizFareed कृपया इसे एक और प्रश्न के रूप में पूछें। –

+1

@AshleyMills, आपके निर्देश के लिए धन्यवाद, लेकिन मुझे लगता है कि मैं इसे अपने आप करूँगा। तो कोई और सवाल उत्पन्न करने की जरूरत नहीं है। और मेरी उपरोक्त टिप्पणी के लिए खेद है। तो इसे हटाने के लिए जा रहा है। –

2

आप इसे गिनने का प्रभारी नहीं हैं - लेकिन ऐसा करने से आप संभावित रूप से कॉल से बाहर होने पर अधिक रणनीतिक हो सकते हैं।

NSUserDefaults के अंदर प्रत्येक कॉल के लिए टाइमस्टैम्प सहेजना ट्रैक रखने का सबसे लचीला तरीका प्रतीत होता है। ओबीजे-सी में मैं यही करता हूं:

// Rate app action for iOS 10.3+ 
-(void)displayDialog { 
    [SKStoreReviewController requestReview]; 
    [self storeTimestamp:PromptTimestampsKey]; 
} 

- (void)storeTimestamp:(NSString *)key { 
    NSNumber *todayTimestamp = [NSNumber numberWithDouble:[[NSDate date] timeIntervalSince1970]]; 

    NSMutableArray *timestamps = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:key]]; 

    // Remove timestamps more than a year old 
    for (NSNumber *timestamp in timestamps) { 
     if ((todayTimestamp.doubleValue - timestamp.doubleValue) > SecondsInYear) { 
      [timestamps removeObject:timestamp]; 
     } 
    } 

    // Store timestamp for this call 
    [timestamps addObject:todayTimestamp]; 
    [[NSUserDefaults standardUserDefaults] setObject:timestamps forKey:key]; 
} 
संबंधित मुद्दे