รับ Bundle Identifier โดยทางโปรแกรม


229

ฉันจะรับสตริงของ Bundle Identifier โดยทางโปรแกรมจากภายในแอพของฉันได้อย่างไร

คำตอบ:


454

Objective-C

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

สวิฟท์ 1.2

let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier

สวิฟท์ 3.0

let bundleIdentifier = Bundle.main.bundleIdentifier

Xamarin.iOS

var bundleIdentifier = NSBundle.MainBundle.BundleIdentifier

10
คำตอบนี้ไม่ จำกัด เฉพาะ iOS มันใช้งานได้กับแอพ Mac ด้วย
จอนนี่

9
ใน Swift ใช้let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Tim Camber

1
(คุณสามารถลบความคิดเห็นนี้) แต่ฉันชอบความรู้สึกในการอ่านคำตอบจากนั้นในความคิดเห็นดูสิ่งที่ชอบ @Jonny s และ Tim (แม้ว่าคุณจะเห็นสิ่งนี้ในคำตอบทั้งหมดอีกครั้ง) มันเชื่อมโยงกับสิ่งอื่นที่เกี่ยวข้องและ มีประโยชน์ ขอบคุณสำหรับชุมชนผู้ยิ่งใหญ่
haxpor

2
Swift3:Bundle.main.bundleIdentifier!
เซบาสเตียนโรท


2

คุณอาจต้องใช้วิธีการพื้นฐานของมูลนิธิเพื่อรับค่า ตัวอย่าง ARC มีดังต่อไปนี้:

NSString *value = (__bridge_transfer NSString *)CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()),
                                                                     (const void *)(@"CFBundleIdentifier"));


0

ฉันใช้มาโครเหล่านี้เพื่อทำให้สั้นลงมาก:

#define BUNDLEID    [NSString stringWithString:[[NSBundle mainBundle] bundleIdentifier]]

#define BUNDLEIDEQUALS(bundleIdString) [BUNDLEID isEqualToString:bundleIdString]

ดังนั้นฉันจึงสามารถเปรียบเทียบเช่นนี้

if (BUNDLEIDEQUALS(@"com.mycompany.myapp") {
    //do this
}

0

ถ้าคุณพยายามทำให้เป็นโปรแกรมคุณสามารถใช้บรรทัดด้านล่างของรหัส:

Objective-C:

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

สวิฟท์ 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

อัปเดตเพื่อความรวดเร็วล่าสุดมันจะทำงานได้ทั้งแอป iOS และ Mac

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.