{"id":19556716,"url":"https://github.com/webmobi59/recept","last_synced_at":"2025-07-13T19:08:02.687Z","repository":{"id":130342520,"uuid":"73095861","full_name":"WebMobi59/Recept","owner":"WebMobi59","description":null,"archived":false,"fork":false,"pushed_at":"2016-11-07T16:07:16.000Z","size":19492,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T07:44:49.309Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WebMobi59.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-07T16:01:18.000Z","updated_at":"2021-04-12T14:43:51.000Z","dependencies_parsed_at":"2023-03-15T06:15:29.151Z","dependency_job_id":null,"html_url":"https://github.com/WebMobi59/Recept","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WebMobi59/Recept","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2FRecept","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2FRecept/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2FRecept/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2FRecept/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WebMobi59","download_url":"https://codeload.github.com/WebMobi59/Recept/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebMobi59%2FRecept/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265191186,"owners_count":23725278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T04:38:58.103Z","updated_at":"2025-07-13T19:08:02.662Z","avatar_url":"https://github.com/WebMobi59.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"#APPoteket iOS - Recept-app\n\n## Generellt\n\nHybridapp skriven i Swift för iOS. Appskalet laddar ner en zip-fil från remote som innehåller template-filer för appens grafiska maner, och sen fås det personliga datat asynkront från API:er.\n\n## TeamCity\n\nProjektet finns upplagt i TeamCity (APPoteket-iOS).\n\nTeamCity bygger projektets workspace och testar det test-projekt som finns i XCode-projeket, idag innehållande endast några få unit-tester som mall - Kompletteras med andra ord väldigt gärna.\n\n## App-store-konton\n\nInfo på wiki.\n\nVi har både Enterprise- och ett vanligt Company-konto. Så för utveckling och intern release (acceptans) använder vi Enterprise-kontot, Company-konto endast för release.\n\n## Test av appen\n\nMed VPN kan man surfa till https://rxapp-download.apoteket.se/ och ladda ner den version man är intresserad av. Genom den sajten distribuerar vi versioner till AT och dev för intressenter. Samt härifrån är också tanken att man ska ladda ner produktions-versionen som ska till App Store.\n\n## Release av ny version\n\nFYI: Apple har haft problem med Swift och automatiska byggen (swift-support-katalogen har saknats i IPA:n), så vi har behövt köra release genom XCode trots allt. Dock ska det fungera enligt nedan, för att undvika diffar mellan utvecklingsmiljöer. Så prova nedanstående först.\n\nGörs INTE från XCode, iom att vi vill köra alla byggen genom TC för att få en och samma maskin som alltid gör bygget.\n\nGå till https://rxapp-download.apoteket.se/ och ladda ner \"Release - Endast för App Store\". Den innehåller version som taggats från TC, så vill man ha en specifik version får man gå in i TC och ändra första byggstegets versionstaggning till en ny version som man vill ha. Alternativt kan man sätta version hårt i versionsbump-steget i 2. Create binaries and install assets. Kom ihåg att Octopus dock inte kan releasa samma version flera gånger.\n\nÖppna Application Loader (v3+), logga in med app-store-admin@apoteket.se (lösen finns i wiki) och ladda upp .ipa-filen genom den. Kontrollera så att samma version vi draftar i app-store är den versionsnummer vi har på .ipa-filen.\n\n## iTunes-credentials\n\nFinns på wikin under rubriken \"Appar iOS\". app-store-admin@apoteket.se (App Store) och app-store@apoteket.se (Enterprise).\n\n## Utvecklingsmiljö\nVi kör Swift 2.x för utveckling huvudsakligen och CocoaPods-projekt (just nu Objective C-projekt) som dependency resolution.\n\nPrereq:\n- XCode 7+: Hämtas från app store\n- [Cocoapods](https://guides.cocoapods.org/using/getting-started.html)\n\nUppsättning:\n1. Öppna XCode. Installera command line tools om det frågas, ev. extra simulator som man vill ha.\n2. Klicka på menyn XCode-\u003ePreferences...\n3. Lägg till nytt apple-id genom att klicka på plus nere till vänster i fönstret\n4. Lägg till app-store-admin@apoteket.se samt app-admin@apoteket.se (lösenord finns i wiki)\n5. För respektive konto i Accounts-fönstret, klicka på Team Name \"Apoteket AB\" och därefter \"View Details\" nere till höger\n6. Klicka på Download All längst nere till vänster för att ladda ner samtliga Provisioning Profiles\n7. Exportera samtliga Distribution Certs och cert som heter ngt med \"Ani Kurteva\" (devcert) från Keychain Access på byggservern (skulle ngt cert saknas kan man alltid revoka ett cert i Apple Member Center och skapa ett nytt, men då måste dessa också installeras på byggservern)\n8. Importera dessa cert på din egen dator\n9. Stäng av XCode\n\nSe därefter till att du har CocoaPods och git-projektet på datorn med följande kommandon:\n```\nsudo gem install cocoapods\ngit clone http://git.apoteket.se/appoteket.ios.git\ncd appoteket.ios\n```\n\nÖppna Workspace-filen som finns i mappen i XCode.\n\nFör att vara säker på att alla cert installerats korrekt, klicka på Recept-projektet och välj fliken \"Build Settings\". Sök på \"signing\" och kontrollera så att du har \"human readable\"-names på Code Signing Identity-värdena samt Provisioning Profile-värdena. Om inte kan det bero på att ngt cert inte installerats korrekt eller att du inte laddat ner samtliga provisioning profiles. Kontrollera också ifall det eventuellt finns giltiga provisioning profiles i dropdown-listan om du klickar på en rad som ser konstig ut.\n\nSer allt ok ut ska det nu bara vara att köra projektet: Använd respektive target för den miljö du vill köra. Recept-Debug går mot localhost.apoteket.se:3001 där vi hostar zip-templates från appoteket.ui-projektet när man kör det med Grunt. De andra (Recept-Test, Recept-Production, Recept-Release, Recept-Dev) går mot respektive test-miljö som kräver VPN alternativt produktion som går mot live-miljön. Dessa är konfigurerade genom respektive plist i Recept-\u003eConfiguration-\u003eConfiguration.\u003cenv\u003e.plist.\n\n## Uppsättning TeamCity, XCode\n\nHoppa in i TeamCity, klicka på \"Agents\", klicka på \"Install Build Agents\", välj \"Zip file distribution\".\nI samma popup-dialog som Zip-länken finns en länk till dokumentation för agenter. Klicka på den och följ den för att regga agent till TC-mastern och för att starta build-agenten.\n\nI stort var det inga större problem att köra projektet genom TeamCity (se OBS nedan). Det som behövs:\n- En build-agent som kör MacOSX med XCode (xcodebuildtools) installerat\n- Ett schema som TeamCity kör och testar på\n- Sätta upp en specifik build pool som bara iOS-delarna använder (för att inte behöva vara agent för alla byggen)\n\nBuild-agent guide: \nhttps://confluence.jetbrains.com/display/TCD9/Xcode+Project#XcodeProject-scheme\nhttps://confluence.jetbrains.com/display/TCD8/Assigning+Build+Configurations+to+Specific+Build+Agents\n\n### OBS:\nFör att få projektet att fungera tillsammans med CocoaPods var jag tvungen att:\n1. Ändra \"VCS checkout mode\" till \"Automatically on agent (if supported by VCS roots)\" för bygget/testerna\n2. Ha ett nytt \"Shared\" schema i projekets workspace (viktigt att target är none, så det hör till workspace och inte till det specifika approjektet, annars hittar build-agent inte rätt i \"Check \u0026 Parse\" i setupen)\n\n## Köra en egen distribueringsservice\nKräver: \n- node/npm\n- Python\n- XCode (xcodebuild tool)\n- Möjlighet att signa iOS-arkiv för enterprise-dist\n\nGå in i mappen DistService, kör:\nnpm install\n\nDärefter något av följande:\ngrunt buildDebug (för att bara bygga ut debug-versionen av projektet och tillhörande filer)\ngrunt server (för att starta en service för att installera root-cert samt en SLL-service self-signed för att tanka hem appen)\ngrunt (för att göra båda ovanstående samtidigt)\n\n\n\n#Recept\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebmobi59%2Frecept","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebmobi59%2Frecept","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebmobi59%2Frecept/lists"}