设计前言Mac OS X Mas

时间:2017-12-07 01:04:41

标签: macos app-store electron single-page-application appstore-approval

我最近为MAC Store打包了我的应用程序并被拒绝了。以下是审核小组发送给我的消息。当我使用开发模式进行测试时,一切正常,但我无法想象我的错误。任何想法将不胜感激。 应用程序是使用Electron构建的。

  

设计序言

     

您的应用的用户界面与macOS Human不一致   接口指南。

     

具体来说,我们发现当用户关闭主应用程序时   窗口没有菜单项重新打开它。

     

后续步骤

     

应用程序实现一个Window菜单是合适的   列出主窗口,以便可以重新打开,或提供类似的窗口   另一个菜单项中的功能。 macOS人机界面指南   声明“菜单栏[a] lways包含[a]窗口菜单”。

     

或者,如果应用程序是单窗口应用程序,则可能是   适合保存数据并在主窗口退出时退出应用程序   闭合。

     

有关在macOS中管理窗口的信息,请查看   Apple人机界面指南中的以下部分:

     

菜单栏及其菜单
  窗口菜单
  文件菜单
  单击Dock中   窗口行为
  请评估你的能力   实施相应的更改,然后重新提交您的应用以供审核。

3 个答案:

答案 0 :(得分:2)

问题在于,通过按import org.apache.spark.sql.types._ import org.apache.spark.sql.functions._ val jsonSchema1 = new StructType() .add("first", LongType) .add("second", LongType) val jsonSchema2 = new StructType() .add("second", LongType) .add("first", LongType) println(jsonSchema1 == jsonSchema2) 将应用程序最小化之后,用户无法从扩展坞再次打开它。

解决此问题的一种方法是在单击x button时仅terminate个应用程序。

我遇到了同样的问题,并通过在x button中添加此函数来解决了该问题。此解决方案适用于AppDelegate

Swift 4.2

现在,单击func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true } 时,应用程序终止。

答案 1 :(得分:0)

如果您正在使用Xamarin,请编辑AppDelegate.cs以创建菜单以重新打开主窗口:

    public class AppDelegate : FormsApplicationDelegate
    {
        NSWindow window;

        public override NSWindow MainWindow
        {
            get
            {
                return window;
            }
        }

        public AppDelegate()
        {
            var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;
            var rect = new CoreGraphics.CGRect(100, 100, 1024, 768);

            window = new NSWindow(rect, style, NSBackingStore.Buffered, false);
            window.TitleVisibility = NSWindowTitleVisibility.Hidden;
        }

        private NSMenu MakeMainMenu()
        {
            // top bar app menu
            NSMenu menubar = new NSMenu();
            NSMenuItem appMenuItem = new NSMenuItem();
            menubar.AddItem(appMenuItem);

            NSMenu appMenu = new NSMenu();
            appMenuItem.Submenu = appMenu;

            // add separator
            NSMenuItem separator = NSMenuItem.SeparatorItem;
            appMenu.AddItem(separator);

            // add open menu item
            string openTitle = String.Format("Open {0}", "MyApp");
            var openMenuItem = new NSMenuItem(openTitle, "o", delegate
            {
                // Get new window
                window.MakeKeyAndOrderFront(this);
            });
            appMenu.AddItem(openMenuItem);

            // add quit menu item
            string quitTitle = String.Format("Quit {0}", "MyApp");
            var quitMenuItem = new NSMenuItem(quitTitle, "q", delegate
            {
                NSApplication.SharedApplication.Terminate(menubar);
            });
            appMenu.AddItem(quitMenuItem);
            return menubar;
        }

        public override void DidFinishLaunching(NSNotification notification)
        {
            // finally add menu
            NSApplication.SharedApplication.MainMenu = MakeMainMenu();
            // Insert code here to initialize your application
            Forms.Init();
            //Load Application
            LoadApplication(new App());
            //Did Finish Launching
            base.DidFinishLaunching(notification);
        }

        public override void WillTerminate(NSNotification notification)
        {
            // Insert code here to tear down your application
        }
    }

如果您正在使用Cocoa,请执行相同的操作,但要使用特定的语言。

按照以下说明重新打开窗口:

[window makeKeyAndOrderFront:self];

答案 2 :(得分:0)

对于电子应用,您可以将此代码添加到OpenAPIindex.js中以解决此问题:

main.js