MuslimData

Build Status Version Swift Package Manager License Platform

MuslimData 是一个伊斯兰库,提供礼拜时间(固定和计算)、离线地理编码器、位置搜索、赞念(Hisnul Muslim)以及真主的 99 个尊名。

固定和计算的礼拜时间:世界上大多数城市都使用基于位置(经度和纬度)的计算方法来确定礼拜时间,但有些城市有固定的礼拜时间表。该库包含大多数固定和计算的礼拜时间。现在你可以贡献它来改进它,也可以在穆斯林社区或穆斯林应用程序中使用它。

迁移指南

如果你要从 muslim-data-ios 的 1.x 版本升级到 2.x 版本,请参阅 迁移指南,获取有关更新代码以适应最新版本更改的详细说明。

示例

要运行示例项目,请克隆仓库并运行。

要求

安装

CocoaPods

MuslimData 可通过 CocoaPods 获得。 要安装它,只需将以下行添加到你的 Podfile 中

pod 'MuslimData'

Swift 包管理器

Swift 包管理器 是一种用于自动分发 Swift 代码的工具,并已集成到 swift 编译器中。

一旦你设置好你的 Swift 包,将 MuslimData 添加为依赖项就像将其添加到你的 Package.swift 文件的 dependencies 值或 Xcode 中的 Package 列表一样容易。

dependencies: [
    .package(url: "https://github.com/kosratdev/muslim-data-ios", .upToNextMajor(from: "2.0.0"))
]
与 Xcode 集成

如果你更喜欢通过 Xcode 管理你的 Swift 包,你也可以使用 Xcode 的 UI 将 Muslim Data 添加为依赖项

  1. 打开你的 Xcode 项目。
  2. 导航到 File 菜单 > Swift Packages > Add Package Dependency...
  3. 将 Muslim Data GitHub 仓库 URL (https://github.com/kosratdev/muslim-data-ios.git) 粘贴到搜索栏中,然后点击 Next
  4. 选择版本规则(从 2.0.0 版本开始,Up to Next Major),然后点击 Next
  5. Xcode 将解析该包并将其集成到你的项目中。

用法

位置助手

有一些位置助手方法提供 离线 位置搜索、地理编码器、反向地理编码器,并检查某个位置的固定礼拜时间。

搜索位置

你可以搜索世界各地的任何城市或地点,当用户没有互联网连接或用户的定位已关闭时,这非常有用,因此你可以在此处进行搜索

let locations = try! await MuslimRepository().searchLocation(locationName: "London")
guard let locations = locations, locations.count > 0 else {
    print("Location could not be found!")
    return
}
print("locations: \(locations)")

地理编码器

使用地理编码器按名称查找位置。

// Use geocoder to find a location by name.
let location = try! await MuslimRepository().geocoder(countryCode: "GB", locationName: "London")
guard let location = location else {
    print("Location name can not be geocoded")
    return
}
print("location: \(location)")

反向地理编码器

使用反向地理编码器按纬度和经度查找位置。

// Use reverse geocoder to find a location by its latitude and longitude.
let location = try! await MuslimRepository().reverseGeocoder(latitude: 36.654090, longitude: 44.541278)
guard let location = location else {
    print("Location name can not be geocoded by latitude and longitude")
    return
}
print("location: \(location)")

礼拜时间

只需将 (Location, PrayerAttribute, 和 Date) 对象传递给 getPrayerTimes 方法,即可轻松获取位置礼拜时间。

// Create location object.
let location = // it should be retrieved from geocoder, reverseGeocoder, or searchLocation methods.

// Crate prayer attributes object.
let attributes = PrayerAttribute(method: .makkah, asrMethod: .shafii, adjustAngle: .angleBased)

// Get prayer times
let prayerTime = try! await MuslimRepository().getPrayerTimes(location: location, date: Date(), attributes: attributes)

print("prayer times: \(prayerTime!)")
print("Fromat prayer times: \(prayerTime!.formatPrayers(.time12))")
print("Format one prayer time: \(prayerTime!.isha.toTime(format: .time24))")
print("next prayer index: \(prayerTime!.nextPrayerIndex())")
print("next prayer interval: \(prayerTime!.nextPrayerInterval())")
print("next prayer time remaining: \(prayerTime!.nextPrayerTimeRemaining())")

赞念 (Hisnul Muslim)

从 (Hisnul Muslim 书籍) 获取所有赞念,这些赞念按 (Category, Chapter, 和 Item) 分类,并且这些赞念适用于以下语言 (en, ar, ckb, ckb_BADINI, fa, 和 ru)

赞念类别

获取所有赞念类别,并针对给定的语言进行本地化。

// Get azkar categories from MuslimData library
let azkarCategories = try! await MuslimRepository().getAzkarCategories(language: .en)
print("Azkar Categories: \(azkarCategories!)")

赞念章节

获取赞念章节,并针对给定的语言进行本地化。

// Get azkar chapters from MuslimData library
let azkarChapters = try! await MuslimRepository().getAzkarChapters(language: .en)
print("Azkar Chapters: \(azkarChapters!)")

获取特定类别的赞念章节,并针对给定的语言进行本地化。

// Get azkar chapters for a specific category from MuslimData library
let azkarChapters = try! await MuslimRepository().getAzkarChapters(language: .en, categoryId: 2)
print("Azkar Chapters for a category: \(azkarChapters!)")

赞念条目

获取特定章节的赞念条目,并针对给定的语言进行本地化。

// Get azkar items for a specific chapter from MuslimData library
let azkarItems = try! await MuslimRepository().getAzkarItems(language: .en, chapterId: 2)
print("azkar items: \(azkarItems!)")

真主的尊名

获取真主的 99 个尊名及其翻译,现在这些翻译适用于以下语言 (en, ar, ckb, ckb_BADINI, fa, 和 ru)

// Get 99 names of allah from MuslimData library
let namesOfAllah = try! await MuslimRepository().getNamesOfAllah(language: .en)
print("Names of Allah: \(namesOfAllah)")

作者

Kosrat D. Ahmed, kosrat.d.ahmad@gmail.com

许可证

MuslimData 在 Apache 许可下可用。有关更多信息,请参阅 LICENSE 文件。