SecItemAdd এবং SecItemCopyMatching ত্রুটি কোড -34018 (errSecMissingEntitament) প্রদান করে


116

কখনও কখনও আমি যখন এক্সকোড থেকে ডিভাইসে কোনও অ্যাপ্লিকেশন চালিত করি তখন আমি কীচেইনটি অ্যাক্সেস করার চেষ্টা করতাম তবে ত্রুটির কারণে ব্যর্থ হয়েছি -34018। এটি কোনও নথিভুক্ত কীচেইন ত্রুটি কোডের সাথে মেলে না এবং ধারাবাহিকভাবে পুনরুত্পাদন করা যায় না। (সময় হতে পারে 30%, এবং এটি কেন ঘটে তা আমার কাছে পরিষ্কার নয়)। এই সমস্যাটি ডিবাগিংকে কী খুব কঠিন করে তোলে তা হ'ল ডকুমেন্টেশনের মোট অভাব। কোনও ধারণা যা এর কারণ এবং কীভাবে এটি ঠিক করবেন? আমি এক্সকোড 5 ব্যবহার করছি এবং ডিভাইসে আইওএস 7.0.4 চালাচ্ছি।

এটি সম্পর্কে এখানে একটি মুক্ত বিষয় রয়েছে: https://github.com/soffes/sskeychain/issues/52

সম্পাদনা: অনুরোধ অনুযায়ী কীচেন অ্যাক্সেস কোড যুক্ত করা হচ্ছে

আমি SSKeychainকীচেইনের সাথে ইন্টারফেস করার জন্য লাইব্রেরিটি ব্যবহার করছি । এখানে স্নিপেট।

#define SERVICE @"default"

@implementation SSKeychain (EXT)

+ (void)setValue:(NSString *)value forKey:(NSString *)key {
    NSError *error = nil;
    BOOL success = NO;
    if (value) {
        success = [self setPassword:value forService:SERVICE account:key error:&error];
    } else {
        success = [self deletePasswordForService:SERVICE account:key error:&error];
    }
    NSAssert(success, @"Unable to set keychain value %@ for key %@ error %@", value, key, error);
    if (!success) {
        LogError(@"Unable to set value to keychain %@", error);
    }
    LogTrace(@"Will set keychain account %@. is to nil? %d", key, value == nil);
    if (value == nil)
        LogWarn(@"Setting keychain %@ to nil!!!", key);
}

+ (NSString *)valueForKey:(NSString *)key {
    NSError *error = nil;
    NSString *value = [self passwordForService:SERVICE account:key error:&error];
    if (error && error.code != errSecItemNotFound) {
        NSAssert(!error, @"Unable to retrieve keychain value for key %@ error %@", key, error);
        LogError(@"Unable to retrieve keychain value for key %@ error %@", key, error);
    }
    return value;
}

+ (BOOL)removeAllValues {
    LogInfo(@"Completely Reseting Keychain");
    return [[self accountsForService:SERVICE] all:^BOOL(NSDictionary *accountInfo) {
        return [self deletePasswordForService:SERVICE account:accountInfo[@"acct"]];
    }];
}

@end

বেশিরভাগ সময় এটি ঠিক আছে। কখনও কখনও আমি দৃ fail়তা ব্যর্থতাগুলিতে আঘাত করব যেখানে আমি হয় কীচেইন থেকে লিখতে বা পড়তে অক্ষম হয়েছি, সমালোচনামূলক দৃser় ব্যর্থতার কারণ হ'ল।


আমার একই সমস্যা আছে এবং এটি পুনরুত্পাদন করতে পারি না ... আমি অ্যাপল থেকে কীচেইনআইটেমর্যাপার ক্লাসটি ব্যবহার করছি। কখনও কখনও এটি একই ত্রুটি বার্তার সাথে গুগল অ্যানালিটিক্স থেকে ক্র্যাশ হয়। আমি গুগল অ্যানালিটিক্স v3.02 ব্যবহার করছি।
জোয়

এছাড়াও, অ্যাপস্টোর থেকে অ্যাপটিতে এটি ঠিক আছে বলে মনে হচ্ছে। এটি শুধুমাত্র বিকাশ সংস্করণ অ্যাপে ঘটে।
জোয়

2
আমার কাছে অ্যাপ স্টোর সংস্করণের জন্য ক্র্যাশলিটিক্স রয়েছে এবং দুর্ভাগ্যক্রমে এটি অ্যাপ স্টোরেও ঘটবে বলে মনে হচ্ছে, যদিও দেবের চেয়ে কম ঘন ঘন: /
টনি

3
আমি কীচেন থেকে সরে যাওয়ার কথা ভাবছি কারণ কীচেইনে থাকা ডেটাটি এলোমেলোভাবে হারিয়ে যেতে পারে অ্যাপ্লিকেশনটির জন্য এটি একটি মারাত্মক ত্রুটি।
টনি

2
আমরা মাঝে মাঝে এই সমস্যাটিও দেখছি। -34018 কেস সহ সেকসাইটিমকপি ম্যাচিং থেকে আমরা অপ্রত্যাশিত আরসি পেলে আমরা একটি ব্যতিক্রম উত্থাপন করি। আমরা চেষ্টা করে (অনিচ্ছাকৃতভাবে) এমন একটি প্রক্রিয়া যুক্ত করার চেষ্টা করেছি যেখানে, একবার আমরা কীচেইন থেকে আমাদের প্রয়োজনীয় মূল্য পাই, আমরা এটি অ্যাপ্লিকেশন মেমরিতে ক্যাশে করি এবং তারপরে সেখান থেকে কীচেন অ্যাক্সেস ছাড়াই পরিবেশন করি। তবে এখন আমরা বিরল ঘটনাগুলি দেখতে পাচ্ছি যেখানে প্রথমটিতে এটির জন্য একটি কীচেইন অ্যাক্সেস -34018 এ ব্যর্থ হয়। কেউ -34018 এর পরেও কি অপারেশনটি আবার চেষ্টা করার চেষ্টা করেছে?
ক্রিস মার্কেল

উত্তর:


45

আইওএস 10 / এক্সকোড 8 ফিক্স:

কীচেইন এনটাইটেলমেন্ট যুক্ত করুন, প্রজেক্টের সেটিংসে যান-> দক্ষতা-> কীচেন ভাগ করে নেওয়া-> কীচেন গ্রুপ যুক্ত করুন + চালু করুন

অ্যাপল থেকে এখানে একটি উত্তর:

আপডেট: শেষ পর্যন্ত আমরা iOS 8.3 -34018 ত্রুটিটি পুনরুত্পাদন করতে সক্ষম হয়েছি। মূল কারণ চিহ্নিতকরণ এবং তারপরে একটি সমাধান নিয়ে আসার এটি প্রথম পদক্ষেপ।

যথারীতি, আমরা একটি মুক্তির সময়সীমার প্রতিশ্রুতি রাখতে পারি না, তবে এটি অনেক বিকাশকারীকে প্রভাবিত করেছে এবং আমরা সত্যিই এটি সমাধান করতে চাই।

এর আগে আমি অ্যাপ্লিকেশনটিতে কিছুটা বিলম্ব যোগ করার পরামর্শ দিয়েছিলাম: ওয়ার্কআরউন্ড হিসাবে কীচেনটি অ্যাক্সেস করার আগে ডিনফিনিশলঞ্চিং উইথঅপশন এবং অ্যাপ্লিকেশনডিডকোম্যাক্টিভ: তবে, এটি আসলে সাহায্য করে বলে মনে হচ্ছে না। এর অর্থ এই যে অ্যাপটি পুনরায় চালু করা ব্যতীত আর কোনও কার্যকর কাজ নেই।

সমস্যাটি মেমরির চাপের সাথে সম্পর্কিত বলে মনে হচ্ছে, তাই সম্ভবত মেমরির সতর্কতাগুলি পরিচালনা করতে আরও আক্রমণাত্মক হওয়া সমস্যাটিকে প্রশমিত করতে পারে

https://forums.developer.apple.com/thread/4743#14441

হালনাগাদ

ঠিক আছে, এখানে সর্বশেষ।
এটি একাধিক সম্ভাব্য কারণগুলির সাথে একটি জটিল সমস্যা:

  • সমস্যার কিছু উদাহরণ ভুল অ্যাপ্লিকেশন স্বাক্ষরের কারণে হয়। আপনি এই কেসটি সহজেই পার্থক্য করতে পারেন কারণ সমস্যাটি 100% প্রজননযোগ্য।
  • আইওএস অ্যাপ্লিকেশন বিকাশকে কীভাবে সমর্থন করে (র। 23,991,853) সমস্যার কিছু উদাহরণ রয়েছে। এটির ডিবাগিং জটিল হয়ে পড়েছিল যে ওএস (আর। 23,770,418) এর অন্য একটি বাগ এর প্রভাবটি kedেকে ফেলেছে, যার অর্থ ডিভাইস যখন মেমরির চাপে ছিল তখনই সমস্যাটি সঙ্কুচিত হয়। আমরা বিশ্বাস করি যে এই সমস্যাগুলি আইওএস 9.3 এ সমাধান হয়েছিল।
  • আমরা সন্দেহ করি যে এই সমস্যার আরও অনেক কারণ থাকতে পারে।

সুতরাং, আপনি যদি কোনও ব্যবহারকারীর ডিভাইসে (এক্সকোডের সাথে কথা হয় নি) যা আইওএস 9.3 বা তারপরে চলছে, তবে দয়া করে এটি সম্পর্কে একটি বাগ রিপোর্ট ফাইল করুন on আপনার বাগ রিপোর্টে ডিভাইস সিস্টেম লগটি অন্তর্ভুক্ত করার চেষ্টা করুন (আমি বুঝতে পারি যে গ্রাহক ডিভাইসগুলির সাথে কাজ করার সময় কৃপণ হতে পারে; একটি বিকল্প হ'ল গ্রাহককে অ্যাপল কনফিগারেশন ইনস্টল করতে বলা, যা তাদের সিস্টেম লগ দেখতে দেয়)) এবং যদি আপনি কোনও বাগ ফাইল করেন তবে দয়া করে আপনার বাগ নম্বরটি রেকর্ডের জন্য পোস্ট করুন।

অ্যাপলের পক্ষে আমি এই বরং ভয়াবহ সমস্যাটি সন্ধান করতে তাদের প্রচেষ্টার জন্য সবাইকে ধন্যবাদ জানাতে চাই। ভাগ করুন এবং উপভোগ করুন

https://forums.developer.apple.com/thread/4743#126088


2
ইস্যুটি এখনও আইওএস 9.2, আইফোন 5 এস এ পুনরুত্পাদন করে।
দেবগানস্তা

1
আপনার লিঙ্ক করা থ্রেডে অ্যাপল থেকে সর্বশেষ প্রতিক্রিয়া অনুযায়ী আইওএস 9.3 এর এই সমস্যার সমাধান করা উচিত বলে মনে হচ্ছে । @ দাইদাই, আপনি কি এই উত্তরটি দিয়ে নতুন উত্তরটি আপডেট করতে পারবেন?
jf

1
@ ইউনলিও এটি আইওএস 10 এর সাথেও দেখতে পাচ্ছেন - এছাড়াও এডাব্লুএস এর 2.4.8 এসডিকে ব্যবহার করে। AWSClientContext.m লাইন 54 এ ত্রুটি ট্রিগার হয়েছে Any কোন ভাগ্য এটি সমাধান করছেন?
চার্লস

1
@ ইউনলি বিটিডব্লিউ, কেবল নীচের উত্তরগুলির সাহায্যে এটি সমাধান করুন: 'কীচেইন ভাগ করে নেওয়ার লক্ষ্য
অর্জনের

1
@ চার্লসএ হ্যাঁ, আমি সেদিন সমাধান করেছি। তুমি ঠিক. 'কীচেইন এনটাইটেলমেন্ট অন' বলে মনে হচ্ছে সমস্যাটি সমাধান করে। আশ্চর্যজনকভাবে, এই ত্রুটিটি সর্বদা ট্রিগার করে না। যাইহোক, এখন আমি এটি চালু করছি।
ইউন লি

25

মূলত আপনাকে আপনার পরীক্ষার টার্গেটে রান স্ক্রিপ্ট হিসাবে নিম্নলিখিতটি যুক্ত করে আপনার .xcttest ফোল্ডারটি কোডাইন করতে হবে।

codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"

ডিভাইসে আমার কীচেইন পরীক্ষা করার সময় আমি প্রচুর -34018 ত্রুটি পেয়েছি এবং এটি এটি ঠিক করতে সক্ষম হয়েছে।

যদি আপনার পরীক্ষার টার্গেটে সমস্যাটি না থাকে তবে এটি সম্ভবত সমাধান নয়।


পরীক্ষার পরিবেশে এটি স্থির করে দিয়েছে। আমাকে আসল পরীক্ষার টার্গেটে রান স্ক্রিপ্টটি যুক্ত করতে হয়েছিল (উদাহরণস্বরূপ, ডাব্লু / সমস্ত ইউনিট পরীক্ষাগুলি, ডিভাইসে চালিত বিল্ড লক্ষ্য নয়)। এটি নিশ্চিত করে যে এটি কেবলমাত্র ডিভাইসে একটি সমস্যা ছিল, সিমুলেটারে নয়।
14:34

2
আমি পেয়েছি ": কোনও পরিচয় পাওয়া যায় নি কমান্ড / বিন / এস প্রস্থান কোড 1" এর সাথে ব্যর্থ হয়েছে যখন আমি এটি করি? অনুমান করে আমার একটি $ CODE_SIGN_IDENTITY নেই। কোন ধারণা আমি কীভাবে এটি ঠিক করব?
ড্যানিয়েল কফম্যান

1
@ ড্যানিয়েলকফম্যান, আপনাকে অবশ্যই আপনার টার্গেট সেটিংসে যেতে হবে এবং কোড সাইনিং আইডেন্টিটিতে "আইওএস বিকাশকারী" (বা অন্য কোনও বৈধ পরিচয়) নির্বাচন করতে হবে। এটি বিল্ড ত্রুটিটি ঠিক করে, তবে আমার পক্ষে কমপক্ষে এটি কীচেন সমস্যাটি ঠিক করে না। আমি এখনও -34018 ত্রুটি কোড পেয়েছি।
মার্সিন

3
ধন্যবাদ মার্সিন আমি এক্সকোড 6 বিটাতে স্যুইচ করলে আমি এই ত্রুটিটি পেতে শুরু করি। এই থ্রেডে কোনও পরামর্শই সমাধান হয়নি। এক্সকোড 5 এবং -34018 এ ফিরে আসা আর হয় না।
ড্যানিয়েল কফম্যান

আমি এক্সকোড .3.৩ ব্যবহার করার পরেও আমি এই ত্রুটিটি প্রথমবারের মতো অনুভব করি।
ভ্লাদিমির স্লাভাক

13

উত্স কোড পরিদর্শন করার পরে । আমি লক্ষ্য করেছি যে কীচেন বৈশিষ্ট্যগুলি একটি সুরক্ষা ডিমন দ্বারা অ্যাক্সেস করা হয় যা নিজস্ব প্রক্রিয়াতে চলে (অ্যাপ প্রক্রিয়া থেকে পৃথক)।

এক্সপিসি নামক প্রযুক্তির মাধ্যমে আপনার অ্যাপ্লিকেশন এবং সুরক্ষিত প্রক্রিয়া একসাথে 'আলাপ' করবে ।

প্রয়োজনে এক্সিকিউসিটি সুপরিচিত লঞ্চড কমান্ডের মাধ্যমে সিকিউরিটিড চালু করে। আপনি সম্ভবত পরীক্ষা করতে পারেন যে ডিমন ক্রিয়াকলাপ মনিটর অ্যাপে চলছে (অবশ্যই যদি সিমুলেটরে চলছে) এবং এর মূল প্রক্রিয়া চালু হয়েছে।

আমার অনুমান এখানেই সম্ভব যে কোনও অজানা কারণে সুরক্ষা ডিমনটি এটি খুব ধীরে শুরু করতে বা করতে ব্যর্থ হয় এবং আপনি যখন এটি ব্যবহার করার চেষ্টা করেন তখন প্রস্তুত থাকে না।

কীভাবে আপনি ডেমনটি প্রাক-লঞ্চ করবেন তা ভাবতে পারেন।

আমি আরও সুনির্দিষ্ট না হওয়ার জন্য ক্ষমা চাইছি। আমি আশা করি এটি আপনার তদন্তে আরও একটি কামড় দিতে আপনাকে সহায়তা করতে পারে।


2
আমি এই সমস্যাটি তখনই পাই যখন আমার অ্যাপটি নীচের অ্যাপের প্রতিনিধি পদ্ধতির সাথে গভীর লিঙ্কের মাধ্যমে পুনরায় খোলা হয়: - (BOOL) অ্যাপ্লিকেশন: (ইউআইএপ্লিকেশন *) অ্যাপ্লিকেশন হ্যান্ডেল ওপেন URL: (এনএসআরএল *) ইউআরএল। আমি যদি কেবল অ্যাপটি শুরু করি, কীচেইন রাইটিংটি কাজ করে এবং যদি আমি অ্যাপ্লিকেশনটিকে ন্যূনতম এবং সর্বাধিক করি তবে এটি এখনও কার্যকর হয়। আমি যখন গভীর লিঙ্কটি দিয়ে আবার খুলি তখনই এই সমস্যাটি দেখা দেয়। আমি 7 বিটা 4. (কেপেবিলিটিস ট্যাবে কীচেইনে ভাগ) আমার প্রকল্পে কনফিগার MyApp.entitlements Xcode আছে
FranticRock

আমার কেস অ্যালেক্সের মতো, যা কেবল তখনই ঘটে যখন অ্যাপটি গভীর-সংযুক্ত থাকে। অন্যথায় এটি ঠিক আছে। অন্য অ্যাপ্লিকেশন থেকে অ্যাপটি খুললে কিছু প্রসঙ্গ সঠিক হতে পারে না।
কোডব্রু

12

আমি আইওএস 8 এসডিকে (এক্সকোড 5 / আইওএস 7 এর সাথে সঠিকভাবে কাজ করছে) আইওএস 8 এসডিকে দিয়ে আমার কোডটি এক্সকোড 6 বিটাতে তৈরি এবং চালানোর পরে একই রকম আচরণ পর্যবেক্ষণ করছি। এক্সকোড 6 এ, আইওএস সিমুলেটার সেকটেমকপি ম্যাচিং সর্বদা -34018 ফেরত দেয়। সক্ষমতার ট্যাবে "কীচেন ভাগ করে নেওয়ার" পরে এটি কাজ শুরু করে।

তবে আমার আর একটি সমস্যা আছে। আমি স্ট্যাটিক লাইব্রেরি বিকাশ করছি, এটি (অন্যদের মধ্যে) ডেমো অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়। উপরের সমাধানটি ডেমো অ্যাপ্লিকেশন প্রকল্পের জন্য কাজ করে, কিন্তু যখন আমি আমার স্থির লাইব্রেরি প্রকল্পের ইউনিট পরীক্ষা করার চেষ্টা করি তখন আমার ঠিক একই ত্রুটি ঘটে। এবং সমস্যাটি হ'ল আমার স্থির লাইব্রেরি প্রকল্পের ধারণাগুলি ট্যাব নেই (কারণ এটি একক প্রয়োগ নয়)।

আমি পরীক্ষার টার্গেটে কোডসইনিং করে জর্জেডিকার্টে পোস্ট করা সমাধানটি চেষ্টা করেছি, তবে এটি আমার পক্ষে কার্যকর হয় না।


8
এবং ফিরে আইওএস 8 বিটা 3 :)
মোস্তফা

7
এবং আইওএস 9.0-এ ফিরে এসেছেন
অ্যালেক্স স্টোন

4
এবং এখন ফিরে আইওএস 9.2 :-(
Vamos

4
আইওএস 10 বিটা 2 এ ফিরে
এসেছেন

3
এবং আইওএস 10 বিটা 5 এ ফিরে এসেছেন
পাস্কাল

6

অ্যাপ্লিকেশন চালু করার সময় সমস্ত ব্রেকপয়েন্টগুলি অক্ষম করার চেষ্টা করুনএক্সকোড থেকে । আপনি পরে তাদের সক্ষম করতে পারেন।

(উপরের কাজের কোনওটিই আমার পক্ষে কাজ করেনি)


স্ট্রেঞ্জ। আমার জন্যও এই সমস্যাটি ঠিক করা মনে হচ্ছে! যতবারই আমি সিমুলেটারে ডিবাগ করা শুরু করেছি আমি -34018 ওএসটিটাসটি অনুভব করতে পারি।
মিডোরি

4

আমি সিমুলেটরে 7.1 এবং 8.0 চলমান সবেমাত্র একই সমস্যা ছিল। কিছু খনন করার সময়, আমি লক্ষ্য করেছি যে অ্যাপল স্যাম্পল অ্যাপটির লক্ষ্য সক্ষমতা জন্য কীচেইন ভাগ করে নেওয়া হয়েছে ing আমি এটি আমার অ্যাপ্লিকেশানের জন্য চালু করেছি যার ফলস্বরূপ আমি একটি এনটাইটেলমেন্ট ফাইল তৈরি করতে পেরেছিলাম যা আমি ডিফল্ট মানগুলি দিয়ে রেখেছিলাম এবং এখন আমি আর -34018 ত্রুটি পাচ্ছি না। এটি আদর্শ নয় তবে আমি আপাতত কীচেইন ভাগ করে নেওয়ার বিকল্পটি বাস করব।


4

.Xcest বান্ডেল কোডসাইন করা যতটা সহজ লাগে ততটা সহজ নয়। মূলত জর্জেডকোর্ট তার উত্তরের সাথে সঠিক যে একটি হিসাবে প্রদত্ত সংক্ষিপ্ত রেখা বেশিরভাগ দেবের পক্ষে Run Scriptযথেষ্ট।

codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"

তবে যখন আপনার কীচেইনে একাধিক শংসাপত্র রয়েছে এটি নিম্নলিখিত লাইনের সাথে ব্যর্থ হবে

iPhone Developer: ambiguous (matches "iPhone Developer: Your Name (ABC123DEF45)" and "iPhone Developer: Your Name (123ABC456DE)"

এমনকি একাধিকগুলি সহ সঠিক শংসাপত্র পাওয়ার একটি সমাধান হ'ল এই শর্ট স্ক্রিপ্ট। নিশ্চিতভাবে এটি আদর্শ নয়, তবে আমার জ্ঞানের হিসাবে আপনার কোডটি আপনার। অ্যাপ্লিকেশনটিতে স্বাক্ষর করার জন্য Xcode খুঁজে পেয়েছে এবং ব্যবহার করা শংসাপত্র পাওয়ার কোনও সুযোগ নেই।

echo "codesign --verify --force --sign \"$CODE_SIGN_IDENTITY\" \"$CODESIGNING_FOLDER_PATH\""
IDENTITIES=`security find-identity -v -s "Code Signing" | grep "iPhone Developer" | awk '{ print $2 }'`

for SHA in $IDENTITIES; do
    codesign --verify --force --sign $SHA "$CODESIGNING_FOLDER_PATH"
    if [ $? -eq 0 ]; then
        echo "Matching identity found: $SHA"
        exit 0
    fi
done;

exit 1

4

আমি এটি দ্বারা দংশিত হয়েছি এবং অন্য কোনও কাজের সাথে আমার কোনও সাফল্য নেই। তারপরে আমি আমার অ্যাপ্লিকেশন সম্পর্কিত সমস্ত ও সেই সাথে সমস্ত ওয়াইল্ডকার্ড প্রোফাইলগুলি (এটি বিন্দু বলে মনে হচ্ছে) মুছে ফেলা করে ডিভাইসে নিজেই আমার সরবরাহকারী প্রোফাইলগুলি সাফ করে দিয়েছি। এটি করতে, এক্সকোডের "ডিভাইসগুলি" উইন্ডোতে যান এবং আপনার (সংযুক্ত) ফোনে ডান ক্লিক করুন:

"প্রভিশিং প্রোফাইলগুলি দেখান" এ ক্লিক করুন এবং সম্পর্কিতগুলি এবং বিশেষত টিম প্রোফাইলগুলি মুছুন:

তারকাচিহ্নযুক্তগুলি সহ অ্যাপ্লিকেশনটি পুনরায় ইনস্টল করার পরে, সবকিছু আবার স্বাভাবিক হয়ে গেছে।


এটি আমাকে এক্সকোড থেকে অ্যাপ চালাতে এবং বিকাশ প্রক্রিয়া চালিয়ে যেতে সহায়তা করেছে।
সালবাহা

অ্যাডহক প্রকাশের সময় আপনি কোন পিপি ব্যবহার করেছেন তা পরীক্ষা করতে পারেন। যদি আপনি কোনও এক্সসি দেখতে পান: প্রোফাইলগুলি, সেগুলি মুছুন এবং আপনার পিপি রিফ্রেশ করুন!
কুকুরগোড

আমি দেখতে পাচ্ছি কীভাবে এটি একটি ফ্যাক্টর হতে পারে। সেখানে কি গণ্ডগোল !! কিছুটা ক্লিন-আপ করছেন
ডেভিড

3

আমি এই সমস্যাটি সমাধান করেছি (আমার মনে হয়)। আমার ডিভাইসে আমার একটি ওয়াইল্ডকার্ড সরবরাহকারী প্রোফাইল রয়েছে যা দেখায় যে এটির বৈধ স্বাক্ষর পরিচয় নেই। আমার কাছে আমার অ্যাপ্লিকেশনটির জন্য একটি প্রভিশন প্রোফাইলও ছিল যা বৈধ ছিল। আমি যখন ওয়াইল্ডকার্ড প্রোফাইলটি মুছলাম তখন আমি -34018 ত্রুটিগুলি পেয়েছি।

আমি এটিও নিশ্চিত করেছিলাম যে টার্গেটের বিল্ড সেটিংসের কোড সাইনিং বিভাগে তালিকাভুক্ত কোড স্বাক্ষরকারী পরিচয় এবং প্রভিশনিং প্রোফাইল অ্যাপ্লিকেশনটির জন্য একটির মতো (সাধারণ "আইফোন বিকাশকারী" নয়)


এটি আমার মত এটি স্থির করে। প্রকল্পের স্তরের কোডটি স্বাক্ষর করতে ডিবাগের জন্য "আইফোন বিকাশকারী" এবং মুক্তির জন্য "আইফোন বিতরণ" সাইন করুন। আমি তখন মূল টার্গেটে ওভাররাইডগুলি সরিয়ে ফেললাম যাতে তারা একই রকম হয়। এর আগে, কীচেইনে সংরক্ষণ করা 100% সময় ব্যর্থ হয়েছিল। এরপরে, কীচেইনে সংরক্ষণ স্থিতিশীল বলে মনে হয়।
jowie

2

আমি আমার অ্যাপ্লিকেশনে (আইওএস 8.4) খুব কমই পেয়েছি -34018 ত্রুটি পেয়েছি। কিছু তদন্তের পরে আমি জানতে পেরেছি যে অ্যাপ্লিকেশনটি প্রায়শই কীচেন থেকে ডেটা অনুরোধ করে ।
উদাহরণস্বরূপ, আমার পরিস্থিতিতে এটি বিভিন্ন অ্যাপ্লিকেশন মডিউল থেকে একই সময়ে একটি নির্দিষ্ট কী জন্য দুটি পড়ার অনুরোধ ছিল।
এটি ঠিক করার জন্য আমি মেমরিতে এই মানটি ক্যাচিংয়ের সাথে যুক্ত করেছি


1

নীল বাদে আমারও একই সমস্যা ছিল, এক্সকোড 6.2, আইফোন 6, আইওএস 8.3 সহ একটি পরীক্ষা ডিভাইসে চলছে device স্পষ্টতই, এক্সকোড পরীক্ষা চালানোর সময় এটি অভিজ্ঞ হয়নি, বরং আমার ডিভাইসে আসল অ্যাপটি চালানোর সময়। সিমুলেটারে এটি ভাল ছিল, এবং অ্যাপটিতে চালানো এটি সম্প্রতি পর্যন্ত পুরোপুরি ঠিক ছিল।

আমি এখানে যে সমস্ত পরামর্শ পেয়েছি তার সবগুলি যেমন আমার ডিভাইসে প্রভিশনিং প্রোফাইলগুলি মুছে ফেলার (আমি তাদের সবগুলি সরিয়ে দিয়েছি) চেষ্টা করেছি, আমার প্রকল্পে অস্থায়ীভাবে কীচেইন ভাগ করে নেওয়ার ক্ষমতা সক্ষম করে (যদিও আমাদের আসলে এটির প্রয়োজন নেই), তৈরি করে নিশ্চিত যে এক্সকোডে আমার বিকাশ অ্যাকাউন্টটি সমস্ত শংসাপত্র এবং প্রভিশন প্রোফাইল ইত্যাদির সাথে পুরোপুরি রিফ্রেশ হয়েছিল N

তারপর আমি সাময়িকভাবে থেকে অভিগম্যতা স্তর পরিবর্তন kSecAttrAccessibleAfterFirstUnlockকরতে kSecAttrAccessibleAlwaysThisDeviceOnly, অ্যাপ্লিকেশন দৌড়ে, এবং এটি জরিমানা কাজ করেন এবং Keychain এ লিখতে সমর্থ হন। তারপরে আমি এটিকে আবার পরিবর্তন করেছি kSecAttrAccessibleAfterFirstUnlockএবং সমস্যাটি "স্থায়ীভাবে" চলে গেছে বলে মনে হচ্ছে।


1

এক্সকোড 8 বিটা 3-এ এই বাগ দ্বারা সবেমাত্র কামড়েছে কীচইন ভাগ করে নেওয়া চালু করা একমাত্র সমাধান বলে মনে হচ্ছে।


1

আমারো একই ইস্যু ছিল. কীচেইন ভাগ করে নেওয়ার মাধ্যমে এটি স্থির করে।


1

(এটি ওপি-র প্রশ্নের সরাসরি উত্তর নয়, তবে অন্যকে সাহায্য করতে পারে)

এক্সকোড সংস্করণ 7.3.1 থেকে 8.0 সংস্করণ আপডেট করার পরে নিয়মিতভাবে সিমুলেটারে কীচেইন ত্রুটি -34018 পাওয়া শুরু করেছে।

দাইদাইয়ের উত্তর থেকে এই টিপস অনুসরণ করা ,

সমস্যার কিছু উদাহরণ ভুল অ্যাপ্লিকেশন স্বাক্ষরের কারণে হয়। আপনি এই কেসটি সহজেই পার্থক্য করতে পারেন কারণ সমস্যাটি 100% প্রজননযোগ্য।

এটি আবিষ্কার করা হয়েছিল যে প্রভিশনিং প্রোফাইলটি কোনওভাবে লক্ষ্যের স্বাক্ষরকারী বিভাগগুলিতে কোনওটিতে সেট করা ছিল না।

তবে এই ক্ষেত্রে সমস্যা সমাধানের জন্য প্রভিশনিং প্রোফাইল ক্ষেত্রগুলিকে বৈধ মানগুলিতে সেট করা যথেষ্ট ছিল না।

আরও তদন্তে দেখা গেছে যে পুশ বিজ্ঞপ্তি এনটাইটেলমেন্টেও একটি ত্রুটি প্রদর্শিত হয়েছিল। এটিতে "আপনার অ্যাপ্লিকেশন আইডিতে পুশ বিজ্ঞপ্তি বৈশিষ্ট্য যুক্ত করুন" বলেছিল said পদক্ষেপটি সম্পন্ন হয়েছে, তবে "আপনার এনটাইটেলমেন্ট ফাইলটিতে পুশ বিজ্ঞপ্তি এনটাইটেলমেন্ট যুক্ত করুন" পদক্ষেপটি ছিল না।

পুশ নোটিফিকেশন ইস্যুটি ঠিক করতে "সমস্যা সমাধান করুন" চাপ দেওয়ার পরে, কীচেইন ত্রুটিটি সমাধান করা হয়েছিল।

এই নির্দিষ্ট টার্গেটের জন্য, "কীচেইন শেয়ারিং" এনটাইটেলমেন্টটি ইতিমধ্যে কিছু আগের সময়ে চালু হয়েছিল। এটি বন্ধ করে দেওয়া এখনও পর্যন্ত কীচেইন ত্রুটিটি আবার দেখা দেয়নি, তাই এটি এই ক্ষেত্রে এটি প্রয়োজনীয় কিনা তা পরিষ্কার নয়।


0

আইওএস 9-এ আমি ঠিকানা স্যানিটাইজারটি বন্ধ করে দিয়েছিলাম এবং এটি ডিভাইসে কাজ শুরু করে।


0

আমার জন্য কাজ করা একমাত্র সমাধান হ'ল প্রথমে নির্দিষ্ট কীটির জন্য নিল সংরক্ষণ করা এবং তারপরে একটি পৃথক ক্রিয়াকলাপের সাথে আমার নতুন মান সংরক্ষণ করা। এটি ত্রুটির কারণে ব্যর্থ হবে -34018 যদি আমি বিদ্যমান মানটি ওভাররাইট করার চেষ্টা করি। তবে যতক্ষণ না আমি প্রথমে নিল সঞ্চয় করে রেখেছি ততক্ষণে আপডেট হওয়া মানটি তত্ক্ষণাত সাফল্যের সাথে সংরক্ষণ করা হবে।


0

SecItemDelete এপিআই চালানোর সময় আমি আজ এই -34018 ইস্যুটি পূরণ করেছি। আমি এটি ঠিক করার জন্য যা করেছি তা হল: ১. কে.এলথ সমাধান অনুসরণ করে https://stackoverflow.com/a/33085955/889892 ২. মূল থ্রেডে SecItemDelete চালান (পূর্বে এটি মূল থ্রেড থেকে পড়া হয়, তাই এটি মুছে ফেলার সাথে সারিবদ্ধ করুন) ।

দুঃখিত এটি আবার ফিরে আসে :(


0

আপনার প্রকল্পের সক্ষমতা কীচেইন ভাগ করে নেওয়ার চালু করুন , এটি সমস্যার সমাধান করা উচিত। এখানে চিত্র বর্ণনা লিখুন


0

আমার জন্য কি কাজ করেছে

  • কীচেইন ভাগ করে নেওয়া চালু করুন।
  • কীচেনটি যতটা সম্ভব কম ব্যবহার করুন এবং মেমরি, ইউজারপ্রেফারেন্সেস, ডিস্ক ইত্যাদিতে ডেটা ক্যাশে করুন
  • এগুলি ব্যর্থ হলে কীচেইন সিআরইউডি অপারেশনগুলিকে অনেকবার চেষ্টা করুন।
  • ডেটা সংরক্ষণ / মুছতে / আপডেট করার জন্য DispatchQueue.sync ব্যবহার করুন।

0

আমার জন্য এটি একটি অ্যাপ্লিকেশন স্বাক্ষর করার বিষয়টি ছিল। আমি কেবল এক্সকোডে সঠিক স্বাক্ষরকারী দলে স্যুইচ করেছি এবং ত্রুটি আর ঘটেনি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.