विज्ञापन समर्थन ढांचे का उपयोग करने के लिए मेरा ऐप अभी अस्वीकार कर दिया गया था। कौन सी लाइब्रेरी जिम्मेदार है?


81

यह केवल एक अद्यतन था जो अस्वीकृति के कारण करने के लिए कुछ भी नहीं बदलता था। यहाँ संकल्प केंद्र से प्रतिक्रिया है:

कारण कार्यक्रम लाइसेंस समझौता पीएलए 3.3.12

हमने पाया कि आपका ऐप iOS विज्ञापन पहचानकर्ता का उपयोग करता है, लेकिन इसमें विज्ञापन कार्यक्षमता शामिल नहीं है। यह iOS डेवलपर प्रोग्राम लाइसेंस अनुबंध की शर्तों का पालन नहीं करता है, जैसा कि ऐप स्टोर समीक्षा दिशानिर्देशों द्वारा आवश्यक है।

विशेष रूप से, iOS डेवलपर प्रोग्राम लाइसेंस समझौते के अनुभाग 3.3.12 में कहा गया है:

"आप और आपके अनुप्रयोग (और कोई तीसरा पक्ष जिसके साथ आपने विज्ञापन सेवा के लिए अनुबंध किया है) विज्ञापन पहचानकर्ता का उपयोग कर सकता है, और विज्ञापन पहचानकर्ता के उपयोग के माध्यम से प्राप्त किसी भी जानकारी, केवल विज्ञापन की सेवा के उद्देश्य के लिए। यदि कोई उपयोगकर्ता रीसेट करता है। विज्ञापन पहचानकर्ता, फिर आप सीधे या परोक्ष रूप से, पूर्व विज्ञापन पहचानकर्ता और रीसेट विज्ञापन पहचानकर्ता के साथ किसी भी व्युत्पन्न जानकारी को संयोजित, सहसंबंधित, लिंक या अन्यथा संबद्ध करने के लिए सहमत नहीं होते हैं। "

कृपया अपना कोड जांचें - किसी भी तृतीय-पक्ष लाइब्रेरी सहित - के किसी भी उदाहरण को निकालने के लिए:

वर्ग: ASIdentifierManager
चयनकर्ता: AdvertisingIdentifier
फ्रेमवर्क: AdSupport.framework

यदि आप भविष्य के संस्करण में विज्ञापनों को शामिल करने की योजना बना रहे हैं, तो कृपया अपने ऐप से विज्ञापन पहचानकर्ता को हटा दें, जब तक कि आपने विज्ञापन कार्यक्षमता को शामिल नहीं किया है।

विज्ञापन पहचानकर्ता का पता लगाने में मदद करने के लिए, "एनएम" टूल का उपयोग करें। "एनएम" टूल की जानकारी के लिए, टर्मिनल विंडो खोलें और दर्ज करें, "मैन एनएम।"

यदि आपके पास लाइब्रेरी स्रोत तक पहुंच नहीं है, तो आप "स्ट्रिंग्स" या "ओटूल" कमांड लाइन टूल्स का उपयोग करके संकलित बाइनरी को खोजने में सक्षम हो सकते हैं। "स्ट्रिंग्स" टूल उन तरीकों को सूचीबद्ध करता है जो पुस्तकालय कॉल करता है, और "ओटूल -ोव" उद्देश्य-सी वर्ग संरचनाओं और उनके परिभाषित तरीकों को सूचीबद्ध करेगा। जहां समस्याग्रस्त कोड रहता है वहां ये तकनीकें आपको संकीर्ण बनाने में मदद कर सकती हैं।

मैं उपयोग कर रहा हूँ तृतीय पक्ष लाइब्रेरी का नवीनतम संस्करण है parse.com sdk, latest version of flurry analytics, and version 2.2 of test flight। क्या किसी को पता है कि कौन सा पुस्तकालय मुद्दा है? धन्यवाद


IMO उन्होंने खुद से उस खोज को करने के लिए बहुत सारे संकेत प्रदान किए ... क्या आपने कोशिश की और आपको यह नहीं मिला?
Adriano Repetti

10
मैंने देखा है कि लोगों को यह समस्या गूगल एनालिटिक्स के साथ है
jarsarmobile

1
हालाँकि, आपको फ्लैग करने का सबसे बड़ा कारण TestFlight है, जिसके लिए यह आईडी आवश्यक है: testflightapp.com/sdk/ios/doc/2.0.0 - "विशिष्ट पहचान के लिए iOS 6.0+ के लिए AdSupport.framework आवश्यक है। उपयोगकर्ताओं को इसलिए हम अनुमान लगा सकते हैं कि आपके ऐप की कितनी संख्या है (ASIdentifierManager का उपयोग करके) आप अपने ऐप में मौजूद लिंक को कमजोर कर सकते हैं। यदि आपका ऐप AdSupport.framework के साथ लिंक नहीं करता है, तो TestFlight SDK अपने आप ही इसे ऐप पर चलने वाले एप्लिकेशन के लिए लोड कर देगा। iOS 6.0+। "
लुइस सेंट-अमूर

5
टेस्टफ्लाइट v2.2.0 का विरोध संघर्ष था। उन्होंने तब से इसे अपने चैंज में दर्ज कर लिया है: दोनों एसडीके संस्करणों को एक में समेट
लें

5
यदि AdSupport.framework वैकल्पिक के रूप में जुड़ा हुआ है, तो क्या यह ऐप स्टोर के साथ समस्या को हल करेगा?
लेगलेस फेज

जवाबों:


114

टर्मिनल में:

  1. अपने प्रोजेक्ट के रूट फ़ोल्डर में जाएं
  2. प्रकार: grep -r advertisingIdentifier . (बिंदु पर डॉट महत्वपूर्ण है)

यह प्रत्येक फ़ाइल की पुन: जाँच करेगा, और आपको ऑफ़िंग लाइब्रेरी का नाम देगा।

(मेरे मामले में, यह हड़बड़ी थी)


1
मैं भी उसी चीज से हिट हुआ। libFlurry_4.3.1.a और libGoogleAnalyticsServices.a दोनों में विज्ञापन-प्रसारकर्ता हैं। पता नहीं कब इनको अपडेट किया जाएगा या फिर कोई काम होगा।
विडाल ग्रूपर

2
हम इस बारे में क्या कर रहे हैं? हम अपने एनालिटिक्स को पूरी तरह से हटा नहीं सकते ...
Nir Golan

@RedYeti - मेरे टाइपो को ठीक करने के लिए धन्यवाद! इसके बारे में क्षमा करें - कॉपी / पेस्ट त्रुटि :(।
एडम

1
@LouWeed - जब ऐसा होता है, तो आपको अपने ऐप्स से Flurry को निकालना होगा, और यह मान लें कि Flurry घबरा रहा है और बहुत जल्द एक नया अपडेट प्रदान करेगा। मुफ्त, तीसरे पक्ष के विश्लेषण का उपयोग करने का नकारात्मक पक्ष यह है कि कभी-कभी वे इस तरह से पेंच-अप करते हैं। मैं अतीत में फ्लेरी, टेस्टफलाइट, फेसबुक, पार्स और कुछ अन्य लोगों के साथ समान रहा हूं। होता है। लेकिन अगर आप सेवा के लिए भुगतान नहीं कर रहे हैं, तो आप बहुत शिकायत नहीं कर सकते :)
एडम

2
पुष्टि कर सकते हैं कि ऊपर आदेश का उपयोग करते समय Flurry 4.3.2 विज्ञापनदाताओं से मेल नहीं खाता है।
केकड़ा

17

अपडेट करें

Google ने Google Analytics सेवा iOS SDK v3.03c जारी किया जो डिफ़ॉल्ट रूप से AdSupport.framework निर्भरता को हटा देता है।

रिलीज़ संस्करण 3.03c (19 फरवरी, 2014) के लिए पूर्ण चैनल प्रविष्टि: https://developers.google.com/analytics/devguides/collection/ios/changelog

पुराना अवेंजर

मेरी समस्या Google Analytics और TestFlight के साथ थी।

TestFlight के लिए मैं सिर्फ लाइब्रेरी को संस्करण 2.2.1 ( https://www.testflightapp.com/sdk/ios/release_notes/2.2.1/ ) पर अद्यतन करता हूं ।

लेकिन Google Analytics को अपडेट करने के लिए मुझे -ObjC ध्वज को हटाना पड़ा। लेकिन जैसे ही मैं कुछ तीसरे पुस्तकालयों का प्रबंधन करने के लिए कोकोपोड्स का उपयोग करता हूं, मैं इसे हटा नहीं सकता। इसलिए मैंने निम्नलिखित कार्य किया:

1 - libGoogleAnalytics.a को संस्करण 3.03a (5 फरवरी, 2014) से अपडेट करना शुरू किया

2 - फिर एक AdSupport.framework भी हटा दिया गया

3 - जोड़ा गया "-force_load \" $ {PROJECT_DIR} /Source/Library/GoogleAnalyticsServicesiOS_3.03a "" के तहत "लक्ष्य -> ​​बिल्ड सेटिंग्स -> अन्य लिंकर झंडे" (ध्यान दें कि मेरी परियोजना में GoogleAnalytics अंदर / स्रोत / स्रोत है) लाइब्रेरी / फ़ोल्डर, और आपको अपना स्वयं का कॉन्फ़िगर करना होगा)

लेकिन जैसा कि मैंने हटा दिया था -OjjC ध्वज मैंने खोजा कि कैसे Cocoapods के साथ -force_load ध्वज का उपयोग किया जाए, तो मुझे दो उपयोगी लिंक मिले:

1 - https://github.com/CocoaPods/CocoaPods/issues/712

2 - http://www.deanmao.com/2012/12/31/linker-error-use-cocoapods/

सारांशित करने के लिए मैंने -ObjC ध्वज को "-force_load $ (TARGET_BUILD_DIR) /libPods.a" "लक्ष्य -> ​​बिल्ड सेटिंग्स -> अन्य लिंकर फ़्लैग" के तहत बदल दिया

लेकिन फिर, जब मैंने अपने ऐप को प्रकाशित करने की कोशिश की तो मुझे एक त्रुटि मिली जो मुझे बता रही थी कि संकलक को libPods.a नहीं मिला, इसलिए मैं "लक्ष्य -> ​​बिल्ड सेटिंग्स -> अन्य लिंकर फ्लैग्स -> रिलीज़" पर गया इस स्ट्रिंग $ (TARGET_BUILD_DIR) को $ {BUILT_PRODUCT_DIR} में बदलें।

तो मेरा अन्य लिंकर फ्लैग नीचे की छवि की तरह बन गया। अन्य लिंकर झंडे

किसी की मदद करने की उम्मीद है।

मेरी अंग्रेजी के लिए खेद है। =]


मैं अभी भी AdSupport ढांचे के बिना अपना ऐप नहीं बना सकता। मुझे ASIIdentifierManager
andygeers

क्या आप Google टैग प्रबंधक का उपयोग कर रहे हैं? क्योंकि अगर आप हैं तो यह समाधान काम नहीं करेगा।
ग्लूको नेव्स

ऐसा नहीं है कि मुझे पता है (टैग मैनेजर भी क्या करता है?) यह संयुक्त GA / टैग प्रबंधक लाइब्रेरी फ़ाइल है
andygeers

आप मैन्युअल रूप से OTHER_LDFLAGSसीधे पॉड्स / पॉडसक्सकोनफीग को संपादित कर सकते हैं।
रिवेरा

Google ने आज Google Analytics सेवा iOS SDK v3.03c जारी किया। मैंने अपना उत्तर अपडेट कर दिया। =]
ग्लूको नेव्स

13

मेरे लिए, Flurry Analytics और TestFlight दोनों ही समस्याएँ थीं।

TestFlight के लिए, इसे अपडेट करना जितना आसान है। 2.2.1 संस्करण में कोई समस्या नहीं होगी (मैंने स्ट्रिंग्स का उपयोग करके जाँच की, जैसा कि Apple सुझाव देता है)

Flurry के लिए, वर्तमान में Flurry को हटाने के अलावा कोई फिक्स नहीं है, और Lou Weed सुझाव के विपरीत, भले ही AdSupport.framework लिंक नहीं किया गया हो, आपका ऐप अस्वीकार कर दिया जाएगा।

यहाँ Flurry समर्थन उत्तर है:

"Flurry तक पहुंचने के लिए धन्यवाद। हमने हाल ही में सीखा है कि Apple ने कुछ ऐप को अस्वीकार कर दिया है, जो यह मानते हैं कि विज्ञापन कार्यक्षमता के बिना पहचानकर्ता (IDFA) के लिए पहचानकर्ता का उपयोग कर रहे हैं। कृपया ध्यान दें कि Flurry IDFA को इकट्ठा नहीं करता है जब तक कि ऐप में AdSupport शामिल नहीं है। विज्ञापन की कार्यक्षमता के लिए। वर्कवर्क। हम Apple के साथ स्पष्टीकरण मांग रहे हैं और हम अपने प्रभावित ग्राहकों को अपडेट करेंगे क्योंकि हम अगले कुछ दिनों में और अधिक सीखेंगे। "

हड़बड़ी ने उनके एसडीके का संस्करण 4.3.2 जारी किया, जो विशेष रूप से उस समस्या को संबोधित करता है।


4

टेस्टफ्लाइट v2.2.0 का विरोध संघर्ष था। उन्होंने अपने चैंज के अनुसार इसे ठीक कर लिया है:Consolidate both SDK versions into one which removes all access to ASIdentifierManager


4

दुर्घटनाग्रस्त लोगों की समस्या थी। हमने इसकी वजह से कुछ ऐप्स को अस्वीकार कर दिया था। लेकिन मैंने पहले ही क्रैशलाईटिक्स के साथ बात की और उन्होंने आज (संस्करण 2.1.6) एक नया अपडेट जारी किया जो इस मुद्दे को ठीक करता है।

कई पुस्तकालयों में AdSupport.framework है लेकिन वे तब तक इसका उपयोग नहीं करते हैं जब तक कि विशेष रूप से बुलाया न जाए। क्रैशलाईटिक्स फ्रेमवर्क को कॉल कर रहा था क्योंकि यह जांचना था कि ऐप में विज्ञापनों के लिए समर्थन है या नहीं। और उस बदलाव को 2.1.5 संस्करण पर लागू किया गया था

इसलिए यदि आप क्रैशबेटिक्स का उपयोग कर रहे हैं, तो यह सबसे संभावित कारण है। इसे ठीक करने के लिए, बस अपने ऐप को फिर से संग्रहित करें ताकि क्रैशलिक्टिक्स इस फिक्स के साथ नए संस्करण का उपयोग कर सकें।

क्रैशलाईटिक्स टीम से प्रतिक्रिया: "हमने इसके लिए एक अपडेट दिया है- क्या आप मैक ऐप को फिर से खोलकर अपना ऐप बना सकते हैं और चला सकते हैं ताकि यह आपके एसडीके को अपडेट कर सके! आप इसके बाद जाने के लिए सभी अच्छे होंगे! मुझे बाद में पोस्ट करें! आप फिर से :)

पुनश्च: ऐसा इसलिए होने लगा है क्योंकि Apple ADSupport उपयोग के लिए अपनी नीति बदल चुका है।


3

मैंने पहले टिप्पणियों में निम्नलिखित लिखा था, "स्ट्रिंग्स" या "ओटूल" टर्मिनल कमांड के लिए लोगों को निर्देशित करना। हालाँकि, मुझे वास्तव में grep के उपयोग के सुझाए गए उत्तर पसंद हैं। तो आप पहले इसे आजमा सकते हैं। मेरा सुझाव उस आदेश के लिए "पकड़" प्रस्तुत करना है, क्योंकि यह बहुत तेज़ है:

git grep advertisingIdentifier

यदि वह काम नहीं करता है, तो कोशिश करें (जैसा कि पहले पोस्ट किया गया है):

grep -r advertisingIdentifier . 

टर्मिनल कमांड के लिए एक उपर्युक्त के रूप में ऊपर दी गई टिप्पणी में जो मैंने पहले लिखा था वह इस प्रकार है:

आप Xcode में अपनी परियोजना की फ़ाइलों को खोज सकते हैं या निर्माण / चलाने के समय में विफल रहता है यह देखने के लिए आप AdSupport ढांचे को हटाने का प्रयास कर सकते हैं।

टर्मिनल का उपयोग करने के लिए, स्पॉटलाइट (खोज) पर क्लिक करें और टर्मिनल टाइप करें। खोज परिणामों में एप्लिकेशन के रूप में प्रदर्शित होने के लिए इसकी प्रतीक्षा करें।

एक बार टर्मिनल में, एक स्पेस के बाद "cd" टाइप करें, फिर फाइंडर से टर्मिनल में अपने Xcode बिल्ड फोल्डर को ड्रैग और ड्रॉप करें। यह स्वचालित रूप से उस फ़ोल्डर का नाम टाइप करें। हिट दर्ज करें, और यह निर्देशिका (सीडी) को आपको उस फ़ोल्डर में बदल देगा।

वहां से, stringsफिर एक स्पेस टाइप करें , फिर अपनी लाइब्रेरी के लिए फाइलनाम या otool, एक स्पेस और लाइब्रेरी के लिए फाइलनाम। आपको TAB को ऑटो-पूर्ण फ़ाइलनाम पर हिट करने में सक्षम होना चाहिए।


1

मेरा ऐप भी उसी त्रुटि से अस्वीकार कर दिया गया था! मुझे नवीनतम फेसबुक एसडीके (3.12) में एडवर्टाइज़र का विज्ञापन मिला। हो सकता है कि आप नीचे दी गई विधि से अपनी लाइब्रेरी की जांच कर सकें:

मैंने टर्मिनल में एक पुस्तकालय के रूप में FacebookSDK.framework खोला और निम्न कमांड टाइप किया

otool -v -s __TEXT __objc_methname FacebookSDK | grep advertIdentifier

लेकिन मुझे नहीं पता कि क्या करना है। क्या इस संदर्भ के कारण मेरा ऐप अस्वीकृत कर दिया गया था? यदि हां, तो क्या होगा यदि मैं अपने ऐप में फेसबुक की कार्यक्षमता का उपयोग करना चाहता हूं?


1
यहाँ, यह मदद करनी चाहिए - stackoverflow.com/questions/21574680/…
एंड्रयू

जवाब के लिए धन्यवाद! मैंने बदलाव किए और अपने ऐप को फिर से सबमिट किया, आशा है कि यह फिर से खारिज नहीं किया जाएगा :)
बॉल करें

@bolonn - क्या उपरोक्त परिवर्तनों के बाद आपकी ऐप को Apple द्वारा अनुमोदित किया गया था?
RoHaN

हाँ, यह मंजूर था!
10

1

यह सतह पर लगता है की तुलना में थोड़ा अधिक जटिल है। कुछ प्रयोग के बाद मैंने पाया कि AdSupport फ्रेमवर्क जुड़ा हुआ है, भले ही केवल सीधे एक्सेस करने वाली कक्षाएं जो AdSupport Framework में संदर्भित हैं। विडंबना यह है कि, [AsIdentifierManager class]जो तृतीय-पक्ष पुस्तकालयों में उपयोग किया जाता है यह जांचने के लिए कि AdSupport फ्रेमवर्क लिंक किया गया है या नहीं, वास्तव में AdSupport फ्रेमवर्क लिंक होने का कारण होगा । वर्ग का उपयोग NSClassFromString(@"AsIdentfierManager")करने से बाध्य करने से AdSupport फ्रेमवर्क स्वचालित रूप से लिंक नहीं होगा। बेशक, अधिकांश समय यह कोड तीसरे पक्ष के पुस्तकालयों में होगा, इसलिए आपके पास इस पर बहुत अधिक नियंत्रण नहीं होगा, हालांकि, यही है।

मैंने GitHub पर एक उदाहरण परियोजना का निर्माण किया जो Segment.io के ढांचे का उपयोग करके इस व्यवहार को दिखाता है। https://github.com/distefam/AdSupportDemo


उपयोगी पोस्ट के लिए धन्यवाद। इसलिए जब हम परियोजना के लिए एक लिंक (वैकल्पिक) को कमजोर करते हैं (मेरे मामले में यह Google विज्ञापन ढांचा है जिसे "GoogleInteractiveMediaAds" कहा जाता है) जिसमें इसके अंदर AdSupport.framework है, जब मैं अपना ऐप सबमिट करता हूं, भले ही आपका ऐप कोई भी नहीं दिखाएगा विज्ञापन (एक भुगतान किया गया संस्करण है जो बिल्कुल भी कोई विज्ञापन नहीं दिखाता है), क्या इसे Apple द्वारा अस्वीकार कर दिया जाएगा ??
C0D3

0

Flurry Analytics इस API का उपयोग करता है।
टर्मिनल आउटपुट:

Binary file ./Lib/Flurry/libFlurry_4.3.0.a matches

Flurry का कहना है कि AdSupport फ्रेमवर्क लिंक नहीं होने पर चयनकर्ता को नहीं बुलाया जाता है।
इसलिए मैंने रूपरेखा को हटा दिया और फिर से सबमिट करने का प्रयास किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.