Re: Mac App Store Approval
Posted: Thu Oct 27, 2011 10:25 am
When I did an iphone app, they rejected it because they didn't like the screenshot, they wanted one more if I remember correctly 

http://www.purebasic.com
https://www.purebasic.fr/english/
Grats, but the "muslces" on the top left button should be editedjesperbrannmark wrote:(check the screenshots! i am proud.. especially for them not complaining about the ipad rip-off interface)
champagne!!
Was just curious about the app so had a look at the page. looks nice. You might want to fix the mis-spelling on : "Educational tool for physiotherapiests"jesperbrannmark wrote:What can I say....
I couldn't have done it without the help here... thanks
http://itunes.apple.com/us/app/musclebu ... ls=1&mt=12
(check the screenshots! i am proud.. especially for them not complaining about the ipad rip-off interface)
champagne!!
No problem.Violet wrote:@J. Baker: Awesome, dude. Thank you very much for this article. I am looking forward to make use of the knowledge provided by you.
Code: Select all
Procedure.s RunPrg(prg.s,param.s)
Program = RunProgram(prg, param, "", #PB_Program_Open|#PB_Program_Read)
Output$ = prg.s+" "+param.s+Chr(13)+"---------------------------------------"+Chr(13)
If Program
While ProgramRunning(Program)
If AvailableProgramOutput(Program)
Output$ + ReadProgramString(Program) + Chr(13)
EndIf
Wend
Output$ + Chr(13)
Output$ + "Exitcode: " + Str(ProgramExitCode(Program))+Chr(13)+Chr(13)
CloseProgram(Program) ; Close the connection to the program
EndIf
ProcedureReturn Output$
EndProcedure
Procedure ListContent(app.s)
;Shall this file be saved in utf8 ?
CreateFile(0,app.s+"/Contents/info.plist")
WriteStringN(0,"<?xml version="+Chr(34)+"1.0"+Chr(34)+" encoding="+Chr(34)+"UTF-8"+Chr(34)+"?>")
WriteStringN(0,"<!DOCTYPE plist PUBLIC "+Chr(34)+"-//Apple//DTD PLIST 1.0//EN"+Chr(34)+" "+Chr(34)+"http://www.apple.com/DTDs/PropertyList-1.0.dtd"+Chr(34)+">")
WriteStringN(0,"<plist version="+Chr(34)+"1.0"+Chr(34)+">")
WriteStringN(0,"<dict>")
WriteStringN(0,"<key>LSApplicationCategoryType</key>")
WriteStringN(0,"<string>"+GetGadgetText(2)+"</string>")
WriteStringN(0,"<key>CFBundleDevelopmentRegion</key>")
WriteStringN(0,"<string>English</string>")
WriteStringN(0,"<key>CFBundleExecutable</key>")
WriteStringN(0,"<string>"+GetGadgetText(4)+"</string>")
WriteStringN(0,"<key>CFBundleGetInfoString</key>")
WriteStringN(0,"<string>"+GetGadgetText(4)+" "+GetGadgetText(8)+", Copyright © "+Str(Year(Date()))+" "+GetGadgetText(6)+". All rights reserved.</string>")
WriteStringN(0,"<key>CFBundleIconFile</key>")
WriteStringN(0,"<string>icon.icns</string>")
WriteStringN(0,"<key>CFBundleIdentifier</key>")
WriteStringN(0,"<string>"+GetGadgetText(10)+"</string>")
WriteStringN(0,"<key>CFBundleInfoDictionaryVersion</key>")
WriteStringN(0,"<string>6.0</string>")
WriteStringN(0,"<key>CFBundleName</key>")
WriteStringN(0,"<string>"+GetGadgetText(4)+"</string>")
WriteStringN(0,"<key>CFBundlePackageType</key>")
WriteStringN(0,"<string>APPL</string>")
WriteStringN(0,"<key>CFBundleShortVersionString</key>")
WriteStringN(0,"<string>"+GetGadgetText(8)+"</string>")
WriteStringN(0,"<key>CFBundleSignature</key>")
WriteStringN(0,"<string>PURE</string>")
WriteStringN(0,"<key>CFBundleVersion</key>")
WriteStringN(0,"<string>"+GetGadgetText(8)+"</string>")
WriteStringN(0,"<key>LSMinimumSystemVersion</key>")
WriteStringN(0,"<string>10.6</string>")
WriteStringN(0,"</dict>")
WriteStringN(0,"</plist>")
CloseFile(0)
;Check if checkbox 11 is checked? what if not?
CreateFile(0,app.s+".entitlements")
WriteStringN(0,"<?xml version="+Chr(34)+"1.0"+Chr(34)+" encoding="+Chr(34)+"UTF-8"+Chr(34)+"?>")
WriteStringN(0,"<!DOCTYPE plist PUBLIC "+Chr(34)+"-//Apple//DTD PLIST 1.0//EN"+Chr(34)+" "+Chr(34)+"http://www.apple.com/DTDs/PropertyList-1.0.dtd"+Chr(34)+">")
WriteStringN(0,"<plist version="+Chr(34)+"1.0"+Chr(34)+">")
WriteStringN(0,"<dict>")
WriteStringN(0,"<key>com.apple.security.app-sandbox</key>")
WriteStringN(0,"<true/>")
WriteStringN(0,"<key>com.apple.security.files.user-selected.read-write</key>")
WriteStringN(0,"<true/>")
WriteStringN(0,"<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>")
WriteStringN(0,"<array>")
WriteStringN(0,"<string>/</string>")
WriteStringN(0,"</array>")
WriteStringN(0,"</dict>")
WriteStringN(0,"</plist>")
CloseFile(0)
returnmessage.s=RunPrg("sudo","chmod -R a+xr "+Chr(34)+app.s+Chr(34))
returnmessage.s+RunPrg("codesign"," -f -s "+Chr(34)+"3rd Party Mac Developer Application: "+GetGadgetText(6)+Chr(34)+" --entitlements "+Chr(34)+app.s+".entitlements"+Chr(34)+Chr(32)+Chr(34)+app.s+Chr(34))
returnmessage.s+RunPrg("productbuild","--component "+Chr(34)+app.s+Chr(34)+" /Applications --sign "+Chr(34)+"3rd Party Mac Developer Installer: "+GetGadgetText(6)+Chr(34)+" yourapp.pkg")
MessageRequester("Now its signed!",returnmessage.s)
EndProcedure
OpenWindow(0, 270, 100, 640, 480, "Click on app to sign it")
ListViewGadget(0, 10, 10, 300, WindowHeight(0) - 20)
TextGadget(1,320,10,300,24,"Category")
ComboBoxGadget(2,320,30,300,24,#PB_ComboBox_Editable)
AddGadgetItem(2,-1,"public.app-category.business")
AddGadgetItem(2,-1,"public.app-category.developer-tools")
AddGadgetItem(2,-1,"public.app-category.education")
AddGadgetItem(2,-1,"public.app-category.entertainment")
AddGadgetItem(2,-1,"public.app-category.finance")
AddGadgetItem(2,-1,"public.app-category.games")
AddGadgetItem(2,-1,"public.app-category.action-games")
AddGadgetItem(2,-1,"public.app-category.adventure-games")
AddGadgetItem(2,-1,"public.app-category.arcade-games")
AddGadgetItem(2,-1,"public.app-category.board-games")
AddGadgetItem(2,-1,"public.app-category.card-games")
AddGadgetItem(2,-1,"public.app-category.casino-games")
AddGadgetItem(2,-1,"public.app-category.dice-games")
AddGadgetItem(2,-1,"public.app-category.educational-games")
AddGadgetItem(2,-1,"public.app-category.family-games")
AddGadgetItem(2,-1,"public.app-category.kids-games")
AddGadgetItem(2,-1,"public.app-category.music-games")
AddGadgetItem(2,-1,"public.app-category.puzzle-games")
AddGadgetItem(2,-1,"public.app-category.racing-games")
AddGadgetItem(2,-1,"public.app-category.role-playing-games")
AddGadgetItem(2,-1,"public.app-category.simulation-games")
AddGadgetItem(2,-1,"public.app-category.sports-games")
AddGadgetItem(2,-1,"public.app-category.strategy-games")
AddGadgetItem(2,-1,"public.app-category.trivia-games")
AddGadgetItem(2,-1,"public.app-category.word-games")
AddGadgetItem(2,-1,"public.app-category.graphics-design")
AddGadgetItem(2,-1,"public.app-category.healthcare-fitness")
AddGadgetItem(2,-1,"public.app-category.lifestyle")
AddGadgetItem(2,-1,"public.app-category.medical")
AddGadgetItem(2,-1,"public.app-category.music")
AddGadgetItem(2,-1,"public.app-category.news")
AddGadgetItem(2,-1,"public.app-category.photography")
AddGadgetItem(2,-1,"public.app-category.productivity")
AddGadgetItem(2,-1,"public.app-category.reference")
AddGadgetItem(2,-1,"public.app-category.social-networking")
AddGadgetItem(2,-1,"public.app-category.sports")
AddGadgetItem(2,-1,"public.app-category.travel")
AddGadgetItem(2,-1,"public.app-category.utilities")
AddGadgetItem(2,-1,"public.app-category.video")
AddGadgetItem(2,-1,"public.app-category.weather")
;
TextGadget(3,320,70,300,24,"Your App Name")
StringGadget(4,320,100,300,24,"Your App Name")
;
TextGadget(5,320,140,300,24,"Your Company Name")
StringGadget(6,320,170,300,24,"Your Company Name")
;
TextGadget(7,320,210,300,24,"Version")
StringGadget(8,320,240,300,24,"1.0.0")
;
TextGadget(9,320,270,300,24,"Bundle name")
StringGadget(10,320,300,300,24,"com.company name.app name")
;
CheckBoxGadget(11,320,270,300,24,"Sandbox app?")
If ExamineDirectory(0, "/Applications", "")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
If LCase(Right(DirectoryEntryName(0), 4)) = ".app"
AddGadgetItem(0, -1, DirectoryEntryName(0))
EndIf
EndIf
Wend
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget() = 0
If EventType() = #PB_EventType_LeftClick
ListContent("/Applications/" + GetGadgetText(0))
EndIf
EndIf
EndSelect
ForEver
Sorry to hear that. I think that is something Apple should have disabled until a developer wants to use it. That's more their issue then any developers and shouldn't be worth a rejection.spacebuddy wrote:I got rejected because the menu "Preferences" was not greyed out.![]()
If you do not grey it out then make sure something happens when someone clicks
on "Preferences". The latest PB beta 4.7 1.5 has a bug and the "Preferences" menu
does not grey out.
Yeah, me too. I have 2 submitted apps that will probably get rejected.spacebuddy wrote:When I used PB 4.61 it greyed it out automatically for me, but when I submitted with latest beta
I did not notice that PB did not grey it out![]()
Hopefully Fred will fix this soon so I can re-submit my program to the app store
Makes sense, their guidelines are strict but they make sure only good professional apps get approved.spacebuddy wrote:I got rejected because the menu "Preferences" was not greyed out.![]()
If you do not grey it out then make sure something happens when someone clicks
on "Preferences". The latest PB beta 4.7 1.5 has a bug and the "Preferences" menu
does not grey out.
It may appear that way. I don't see how some apps make it through the app store. Some even have major bugs that never get fixed and in my opinion, should be removed from the app store.moogle wrote:Makes sense, their guidelines are strict but they make sure only good professional apps get approved.spacebuddy wrote:I got rejected because the menu "Preferences" was not greyed out.![]()
If you do not grey it out then make sure something happens when someone clicks
on "Preferences". The latest PB beta 4.7 1.5 has a bug and the "Preferences" menu
does not grey out.
Some GUI's for programs I've seen on here (the forum in general) aren't very good looking.