新普金娱乐网址


微信红包店小序开发进程中遇见的题目 php获取附近周边商家 显示最近号

地理iOS开发常用三正在库、插件、知名博客等等

App Store审核指南中文版(2014.10.11创新)

  • 十月 04, 2018
  • 地理
  • 没有评论

正文主要描述了iOS的地面与长途通知的着力以,以及某些是注意的题材。

苹果于9月3日针对App
Store审核指南进行了要害创新,新增补加了扩大、HealthKit、HomeKit以及TestFlight相关内容。另外,在9月10日新品发布会后,苹果还更新了App
Store审核指南,添加Apple
Pay相关内容。文中黑色加粗倾斜文字是相对于以前本的疯长内容,蓝色部分代表苹果相关合法文档的链接。

Note:文章产生为数不少身旁同学提供了救助,大量引用或转载本文请宣示原文地址,多谢。

 App Store Review
Guidelines(英文版)。

相同:用户通报简介

前言

用户通报是啊

iOS中是三种植常见的波通报方式:NSNofiticationCenter、KVO Notification
和 User Notifications,其中 User
Notifications,就是本文将探讨的用户通报。

咱还亮 iOS 系统时常的发生一对及 App
相关的通知栏消息,这些信往往伴随在提示音同 App
的桌面图标右上比的匪念消息提示,这些通知就是 iOS 的用户通报。

谢你付出宝贵的才华与时来开iOS应用程程序。从工作跟待遇的角度而言,这对广大的开发员来说一直还是均等码值得投入的事业,我们愿意帮而参加这成功之团体。我们揭晓了《App
Store审核指南》(App Store Review
Guidelines),希望由此它们拉您避开开发应用程序过程被的局部题材,并协助您于付给应用时加快审核流程。� 

用户通报之归类

用户通报分为两好像:本地通知以及远程通知,其中远程通知同时叫做推送通知。

两头极其关键的别是:本地通知是出于 App
发送到目前设备上,不需网络支持;而远程通知是出于 App
的服务器发送到苹果之 APNs 服务器,并出于 APNs 服务器转发到相应设备(由 App
服务器指定接收通知之设备)。

双面极其关键的共同点是:本地通知和远程通知对用户的表现形式是如出一辙的,两者皆好采取通知栏消息、App
桌面图标右上比赛角标和唤醒音的不二法门通报用户。

咱们用应用程序(Apps)视为与书籍或曲不同之活,我们并无存储它们。如果你打算批评宗教,那就算失描绘本书。如果你想使描述性,那就是形容本书要摹写篇讴歌,或者可以创建一个治病程序。这么做或会见比较复杂,但是咱不同意在应用程序商店(App
Store)出现某种禁止内容。这会被你认识及我们秉持的愈益深远的目的: 

用户通报发出什么用场

即得力之(无论是在前台要后台)向用户发送信息(聊天信息、新闻、待办事项、天气转等)是用户通报不过可怜之优势。

除此以外,有效成立之采取用户通报,可以被咱的 App 有重好之体验,如:

  • 当待办事项将过期时得以马上提示用户;
  • 当用户执行下载好文件任务时上后台,当下载好后好通报用户;
  • 当用户环球旅行时,可以因用户的地理位置推送天气转等信息;
  • 当用户订阅的之一杂志要新闻主题有更新时,通知用户;
  • ……

本文后续内容将为以开发者的角度对用户通报进行深刻之探赜索隐,本文讨论内容对iOS7/8/9,有关
iOS10 系统的用户通报会见另外做教授。

此地可是下载
本文demo
。此外,本文中的远程通知下了
Simplepush.php
,内部代码很简单,可下该脚本于定义远程通知之始末,当然可以以
本文demo
里我修改过的本子文件,建议花几分钟查看以下 Simplepush.php
的用法。此外,demo
不提供证明,如有长途通知要求,请自行报名证书,否则无法正常下
Simplepush。

本文主要参照了苹果官方的 Local and Remote Notification Programming
Guide
以及本文用到的接口的官方文档。

咱有多而供应孩子可下载的应用程序。家长的监护可以非常好地保护孩子,但是若需开乃当举行的那么片。因此,您要询问我们每时每刻以顾着若的孩子。 

次:本地通知的使

App
Store中发出数百万底采取。如果您的应用程序没有什么便宜的用处,不是独一无二之或无克提供持续性的游艺功能,那它们或许不会见受我方接受。 

翻开本地通知功能

  • 于 iOS7,如果用户并未以系装置里关闭该 App
    的通告功能,那么开发者无需召开其他操作即可使当地通知功能。

  • 对此 iOS8
    及事后的系统,若用利用当地通知功能,则需报通知类型。
    照会类型有四种:角标(UIUserNotificationTypeBadge)、提示音(UIUserNotificationTypeSound)、提示信息(UIUserNotificationTypeAlert)和管外通知(UIUserNotificationTypeNone)。

    卿可以登记上诉四种通知类型的随意组合,但说到底可用之打招呼形式要根据用户对这个
    App 通知之装置规定。比如:App
    内部注册了角标、提示音和提示信息,但是用户关闭了声通知,那么接本地通知时凡匪会见发提示音的。
    于 iOS8 及其后的网,注册本地通知的代码示例如下:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // 只有 iOS8 and later 才需要
        if ([[UIApplication sharedApplication]  respondsToSelector:@selector(registerForRemoteNotifications)]) {
            // 这里 types 可以自定义,如果 types 为 0,那么所有的用户通知均会静默的接收,系统不会给用户任何提示(当然,App 可以自己处理并给出提示)
            UIUserNotificationType types = (UIUserNotificationType) (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert);
            // 这里 categories 可暂不深入,本文后面会详细讲解。
            UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
            // 当应用安装后第一次调用该方法时,系统会弹窗提示用户是否允许接收通知
            [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
        }
    
        // Your own other codes.
        return YES;
    }
    

当系统弹窗提示用户是否同意收取通知后,用户可能会见拒绝;我们得在
AppDelegate 的 application:didRegisterUserNotificationSettings:
方法中因故来查阅注册成功的通报类型,我们得以于用到注册结果后召开打定义操作(比如失败时弹个窗提示用户眼前无法利用用户通报)。

苹果推荐以之后发送的地面通知时,要避下无挂号成功之打招呼类型(并无是强制要求)。

- (void)application: (UIApplication*)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
    if (notificationSettings.types & UIUserNotificationTypeBadge) {
        NSLog(@"Badge Nofitication type is allowed");
    }
    if (notificationSettings.types & UIUserNotificationTypeAlert) {
        NSLog(@"Alert Notfication type is allowed");
    }
    if (notificationSettings.types & UIUserNotificationTypeSound) {
        NSLog(@"Sound Notfication type is allowed");
    }
}

假定你的应用程序看上去像是那种单纯费了几天功夫简单并凑出来的出品,或者只是怀念当咱们的店铺中吸引朋友的眼球,请提早做好吃拒绝的备。我们发好多神态严谨的开发者,不欲她们之胜格调应用程序充斥在部分业余创作中。 

发送本地通知

出殡一个地方通知主要发生如下步骤:

  1. 首先要按照上述 “开启本地通知功能” 步骤注册通知类型;

  2. 始建一个 UILocalNotification 对象;

  3. 设置 UILocalNotification 对象的 fireDate
    属性,该属性表示什么时接触发送即时条地方通知;同时可以安装 timeZone
    属性表示时区,设置 timeZone 后,当用户过时区经常,fireDate
    会按照时区被调动(类似于钟表调整);此外,可以运用 repeatInterval 和
    repeatCalendar 来安装周期性的打招呼。

  4. 设置通知的提示信息:

    • 装 alertTitle 作为通知的概要,设置 alertBody
      作为通知的求实信息;注意这里强烈建议使用本地化的字符串,即
      NSLocalizedString(@"This is alert body", nil);
      瞩目 alertTitle 属性只适用于 iOS8.2 及事后的系统
    • 设置 applicationIconBadgeNumber 用于展示 App
      桌面图标的右手上斗角标。
    • 装 soundName, 我们一般安装为
      UILocalNotificationDefaultSoundName;使用自定义 sound
      在末端会进一步讲解。
    • 以安提醒道的值时,对于 iOS8
      及事后的体系,可以检查下时提醒道是否早已报成功(可以用
      [[UIApplication sharedApplication] currentUserNotificationSettings]
      获取注册成功之关照类型)。
  5. 可以挑选设置 userInfo 属性,该属性一般可以存放业务有关的音(如 ID
    等),这样收到通知后可一本万利处理事情有关逻辑;

  6. 以方面创建的 UILocalnotification 放入通知队列中:使用办法
    scheduleLocalNotification: 会按照 UILocalnotification 中之
    fireDate 进行通报之发送,而用 presentLocalNotificationNow:
    会立即发送该地方通知。

脚为闹一致段落示例代码:

- (void)scheduleLocalNotification {
    NSDate *itemDate = [NSDate date];

    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    if (localNotif == nil)
        return;
    localNotif.fireDate = [itemDate dateByAddingTimeInterval:10];
    localNotif.timeZone = [NSTimeZone defaultTimeZone];

    localNotif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ after %i seconds scheduled.", nil), @"本地通知", 10];

    localNotif.alertTitle = NSLocalizedString(@"Local Notification Title", nil);

    localNotif.soundName = UILocalNotificationDefaultSoundName;
    localNotif.applicationIconBadgeNumber = 1;

    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"ID:10" forKey:@"LocalNotification"];
    localNotif.userInfo = infoDict;

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}

咱俩用不容任何含越界内容或行为之应用程序。您可能会见问道,具体界定是呀?最高法院的大法官曾有言:“它起不时我本来心中有数。”当您过这无异于限制时,我们以为你吗会见产生自知之明。 

处理收到的当地通知

此地分三种植情景讨论哪些处理地方通知:

设若你的应用程序被拒绝,我们设置了一个对委员会供而上诉。如果你去媒体抨击我们,肯定对您于事无补。
 

运用处于前台

运处于前台时,本地通知到时,不会见起提示音、通知栏横幅提示,但是 App
桌面图标的右侧上斗角标是出数值显示的,所以即便以前台,我们为理应对角标数量做处理
此刻,我们得以于 application:didReceiveLocalNotification:
方法中得到地头通知,示例代码如下:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    NSString *itemName = [notification.userInfo objectForKey:@"LocalNotification"];
    [self.windowRootController displayNotification:[NSString stringWithFormat:@"%@ receive from didReceiveLocalNotificaition", itemName]];
    // 这里将角标数量减一,注意系统不会帮助我们处理角标数量
    application.applicationIconBadgeNumber -= 1;
}

假如您试着作弊(比如以审核流程中作假,窃取用户数量,抄袭其他开发者作品,或者操作下评分),我们将见面变除了您的应用程序,并且以你从开发者计划被开。 

使处于后台

当使用处于后台时,本地通知到时,会基于地面通知设置的通报类型以及用户安装的通知类型进行提示,例如锁屏界面通知、通知栏通知、声音、角标。

这儿如果滑动锁屏界面通知或者点击通知栏通知,则会切换应用到前台,我们可以运用和使用处于前台时同样之得通知之艺术。

不过只要我们点击 App
桌面图标,则无从赢得到用户通报,此时通知栏消息还会有。此外,角标也不见面扭转,如果愿意修改角标,则需
App 进入前台后拿其修改。

马上是一个动态文档,新交付的应用程序会促成新的题材发出,并可能时时产生新的平整。或许你的应用程序会触及交当时或多或少。
 

行使尚未运行

倘若使用尚未运行,当本地通知到时,会基于地方通知设置的通类型和用户设置的通报类型进行提醒,例如锁屏界面通知、通知栏通知、声音、角标。此时设滑动锁屏界面通知或者点击通知栏通知,则会打开应用,但这时我们取得通知的法跟前面有所不同,通过application:didReceiveLocalNotification:
是无法取通知之。 这种状态咱需要通过
application:didFinishLaunchingWithOptions: 中之 LaunchOptions
获取通知,示例代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if (localNotif) {
        NSString *itemName = [localNotif.userInfo objectForKey:@"LocalNotification"];
        [self.windowRootController displayNotification:[NSString stringWithFormat:@"%@ receive from didFinishLaunch", itemName]];  // custom method
        [UIApplication sharedApplication].applicationIconBadgeNumber = localNotif.applicationIconBadgeNumber-1;
    }

    // Your own other codes.
    return YES;
}

同等的,但是若我们点击 App
桌面图标,则无从取到用户通报,此时通知栏消息还会设有。此外,角标也未会见变卦,如果愿意修改角标,则需要
App 进入前台后用那修改。

末了使证实的凡,我们充分强调这个平台,并且于你的作品代表尊崇。我们真在品味尽力创造世界顶尖平台,以便让你展示才华,同时得到对应的待遇。如果及时读上去给你觉得我们的控制需要过强,那是盖我们既为用户承诺确保,我们将使用我们的出品让他们赢得大格调体验。 

地理位置相关的当地通知

在 iOS8
及下系统遭到,我们得定义一个与地理位置有关的当地通知,这样当我们越了设定的地理区域时,系统会发送本地通知。

目录  

挂号位置相关的本地通知

  1. 需创造一个 CLLocationManager 对象,并为那个安一个 delegate;

  2. 恳请用户同意用固定服务:调用 CLLocationManager 的
    requestWhenInUseAuthorization,注意工程的 plist 中待配置
    NSLocationWhenInUseUsageDescription
    选项,否则一定服务无法正常启用;示例代码如下:

    - (void)registerLocationBasedNotification {
        CLLocationManager *locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        // 申请定位权限
        [locationManager requestWhenInUseAuthorization];
    }
    
  3. 透过 CLLocationManagerDelegate
    回调检查用户是否允许用固定服务,如果同意了劳动,那么可以发送一个职位相关的本土通知。

    - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
        // 因为上面我们是使用了 requestWhenInUseAuthorization,所以这里检查的是 kCLAuthorizationStatusAuthorizedWhenInUse
        if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
        [self scheduleLocalBasedNotification];
        }
    }
    
  4. 创一个职相关的地方通知,并以那个到由系统处理。

    - (void)scheduleLocalBasedNotification {
        UILocalNotification *locationNotification = [[UILocalNotification alloc] init];
        locationNotification.alertBody = @"到达xxx";
        locationNotification.regionTriggersOnce = NO; // 表示每次跨越指定区域就会发送通知
        locationNotification.region = [[CLCircularRegion alloc] initWithCenter:LOC_COORDINATE radius:LOC_RADIUS identifier:LOC_IDENTIFIER];
    
        [[UIApplication sharedApplication] scheduleLocalNotification:locNotification];
    }
    

1.条款及标准 

拍卖位置相关的本地通知

和方讲了之 “处理收到的地面通知” 比较,这里可以以通报里获取到
region,然后可以开打定义操作,其余所有操作都和 “处理收到的当地通知”
一致。

留神要用户没有同意利用一定权限,则无从接收位置相关的本地通知。

2.功能 

其三:远程通知的施用

3.元数据

APNs 简介

APNs 是苹果提供的长距离通知之服务器,当 App 处于后台或者没运行时,如果
App 的服务器(之后我们誉为
Provider)需要发送通知消息为客户端,则用负 APNs 服务器。

利用 APNs 服务时,远程通知之路由路径为: Provider –> 苹果之 APNs
服务器 –> 手机设备 –> App。在这途径中,Provider 与 APNs
服务器之间有一个 TLS 连接,Provider 通过这连续将远程通知推送到苹果之
APNs 服务器;手机配备以及 APNs 服务器之间也会见发一个 TLS
连接,所有发于手机配备的 APNs 远程通知还是利用即时一个
TLS连接,然后由装备区分远程通知所属的
App,进而通知于用户有应用来长途通知。

脚简单介绍下者流程:

4.位置 

设备 与 APNs

设备和 APNs 建立连接的长河要图:

Device-APNs.png

要明确的要领:

  1. 是连续由系统建立并保障,无需开发人员管理;
  2. 落得图被之关系是苹果设备本身的证书,与开发者账号被申请之证明无关;
  3. 每个设备及 APNs 服务器就待保障一漫漫连接。

5.推送通知 

Provider 与 APNs

Provider 与 APNs 建立连接的进程要图:

Provider-APNs.png

要肯定的要领:

  1. 以此连续由 App 的 bundle ID 唯一确定;
  2. 直达图被 Provider certificate 需要通过开发者账号申请变更,其中含有 App
    的 bundle ID。

6.游戏中心 

APNs 工作的流水线

Provider-App.png

  1. 先是客户端需要向 APNs 服务器注册时 App,APNs
    会返回一个Token(注意是历程要求 App
    有合法的关系,有关证件这里不开详细描述);注意不同采取在同设备及沾的
    Token 不同,同一应用在不同装备及取得之 Token也不同,所以 Token
    是和设备与 App 唯一绑定的;

  2. App 用到 Token 后用将该发送给 Provider;

  3. Provider 发送推送通知时,指定 Token 和通内容,并发送给 APNs
    服务器;

  4. APNs 服务器会将通知发送给 Token 对应之设施及;

  5. 设施收到通知后,根据 APNs 发过来的通告中含有的 bundleID
    信息分别是哪个App的远距离通知(这里应该是冲 Token 来博取 bundleID)。

7.广告 

Feedback 机制

Feedback 是 APNs
服务器提供的用来减少服务器压力及优化网络的劳务,基本的办事流程如下图:

APNs-Feedback.png

  1. Provider 发送一个长途通知被 APNs 服务器,APNs
    服务器会检测目的设备是否在线,如果不在线,那么 APNs
    服务器会暂时存该信息;

  2. 当目的配备上线后,APNs
    会发送暂存的音被目的设备(按照苹果官方说法暂存消息才会暂存最后一长条消息,之前的消息会为丢弃);

  3. 倘目的设备大遥远都并未上线,那么 APNs 消息会管欠装备在 feedback
    名单。Provider 可以定期去 APNs 拉新 feedback 名单;

  4. 当 Provider 再次于前的设施发送远程通知时,需要检查一下 feedback
    名单,如果设备在这榜,则不再发送给 APNs 了;

  5. 当设备再次上线后,Provider 可以重新以这个设备移除 feedback 名单,当
    Provider 更新 feedback list
    后,就好另行于该设备发送远程通知了。当然,feedback list
    的创新可能会见发生周期,如果要立即有效之换代 feedback list,那么需要
    App 打开后,及时通报 Provider;

  6. 这种体制的补就是防止发送多余无用的远程通知消息,一方面可缓慢
    APNs 服务器的下压力,另一方面为可以减网络流量;

8.商标与商品外观 

启远程通知功能

9.传媒内容 

报通知类型

  • 对此 iOS7,无需是步骤;
  • 于 iOS8
    及以后的网,若要使用远程通知功能,则需要报通知类型。步骤及
    “本地通知的用” 中 “开启本地通知功能” 是完全相同的,此处不再重复。

10.用户界面 

注册远程通知

基本流程也:

  1. 挂号通知类型,上同略带节已经举行了介绍;
  2. 使用 registerForRemoteNotifications 注册远程通知(对于 iOS7 使用
    registerForRemoteNotificationTypes:);
  3. 使用 application:didRegisterForRemoteNotificationsWithDeviceToken:
    接收 APNs 返回的 Token,使用
    application:didFailToRegisterForRemoteNotificationsWithError:
    处理登记错误;
  4. 要达一致步骤中注册成功了,那么以获得的 Token 发送给 Provider。

注意:

  1. 时总的来说,对于 iOS9,每次重新安装应用后得到的 Token
    是未一样的,而且每次重装系统也会转移,所以
    每次用启动时还得按点的步调注册一次于

  2. 甭将事先的 Token 缓存,当用以 Token 传送到 Provider
    时,一定要运 registerForRemoteNotifications
    获取,并采用回调处理登记结果;当用注册了通报,而且 Token
    没有改动时,系统会立刻返回结果,不会见失掉 APNs 请求。这里猜测系统助将
    Token
    缓存下来,且与运用之状态进行了关乎,如果应用即状态没有改变,那么会及时将系统存下的
    Token 返回。为了证明当时点,可以将网络关闭进行测试,如果 App
    没有卸载,也是可获取到 Token 的;

  3. 肯定要是出被了 Push 功能的关系,才能够正常使用远程推送。

注册远程通知之以身作则代码如下:

- (void)registerRemoteNotifications {
    // 区分是否是 iOS8 or later
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerForRemoteNotifications)]) {
        // 这里 types 可以自定义,如果 types 为 0,那么所有的用户通知均会静默的接收,系统不会给用户任何提示(当然,App 可以自己处理并给出提示)
        UIUserNotificationType types = (UIUserNotificationType) (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert);
        // 这里 categories 可暂不深入,本文后面会详细讲解。
        UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
        // 当应用安装后第一次调用该方法时,系统会弹窗提示用户是否允许接收通知
        [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
    } else {
        UIRemoteNotificationType types = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound;
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
    }
}

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(nonnull UIUserNotificationSettings *)notificationSettings {
    // Register for remote notifications.
    [[UIApplication sharedApplication] registerForRemoteNotifications];
}

// Handle register result.
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    //获得 device token,这一步处理为字符串的操作很重要
    NSString *token = [[[deviceToken description]
                        stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
                        stringByReplacingOccurrencesOfString:@" "
                        withString:@""];
    NSLog(@"DeviceToken string, %@", token);
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    // 将 token 发送给 Provider
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"Error in registration for apns service. Error: %@", error);
}

11.置和泉 

发送远程通知

12.办案到手与聚合 

长距离通知之情节

Provider 发送给 APNs 服务器的情格式如下:

{
   // aps key 是必须要有的
   "aps" : {
      "alert" : {
         "title" : "通知的概要,对 8.2 以前的系统本选项无效"
         "body" : "通知的具体内容",
         "loc-key" : "GAME_PLAY_REQUEST_FORMAT",
         "loc-args" : [ "Jenna", "Frank"]
      },
      "badge" : 3, // 角标数值
      "sound" : “chime.aiff" // 可以自定义提示音
   },

   "userName" : "username", // aps key 之外可以有自定义内容,需要符合 json 格式
   "message" : ["hello", "world", "programmer"]
}

上面只是略介绍了科普的情节,如需更进一步深定制推送通知,建议查看:
苹果官方payload文档

13.设施损害 

远程通知之本地化处理

起一定量栽艺术:

  • 于 Provider 端进行本地化
    App 可以用手上利用的言语发送给 Provider,Provider
    在殡葬远程通知前,检查时设施以的语言,并抓好本地化后发送给 APNs
    服务器。App 发送当前以的语言让 Provider 的言传身教代码:

    NSString *preferredLang = [[NSLocale preferredLanguages] objectAtIndex:0];
    const char *langStr = [preferredLang UTF8String];
    [self sendProviderCurrentLanguage:langStr]; // custom method
    

    相似的话,将眼前系语言信息发送给 Provider 时,也会见拿 Token
    一起发送,这样 Provider
    才会当殡葬远程通知时因不同目的设备开展本地化处理。
    另外,当用启动后,用户或会见窜系统语言,这时,App 需要监听
    NSCurrentLocaleDidChangeNotification
    通知,并当拍卖通报之办法中另行于 Provider 发送当前采取的语言。

  • 每当客户端本地化
    这种模式下,Provider 在发送远程通知时,需要设置 Payload -> alert
    中的本地化相关属性,如下:

    {
        // aps key 是必须要有的
        "aps" : {
            "alert" : {
                      "title" : "通知的概要,对 8.2 以前的系统本选项无效",
                      "loc-key" : "Remote Notification",
                      "loc-args" : [ "hello", "world"]
            },
            "badge" : 3, // 角标数值
            "sound" : “chime.aiff" // 可以自定义提示音
        }
    }
    

点 loc-key 以及 loc-args 就是本地化相关的习性,用于地方化 alert 中的
body。
当 App 收到此音时,会冲系统当下的语言设置去相应的本地化文件中找寻和
loc-key 对应的 value,如果 loc-key 对应之 value
是一个格式化的字符串,那么可以用 loc-args 传递参数。

若果本地化文件被: “Remote Notification” = “我们程序员通常钟爱:%@ %@”
,那么提示信息就是: “我们程序员钟爱:hello world”;

除此以外在本地化文件被我们啊得以据此 %n$@ 代替 %@ 用来表示用 loc-args
的第几独参数。例如:”Remote Notification” = “我们程序员通常钟爱:%2$@
%1$@”,那么提示信息是:”我们程序员钟爱:world hello”。

一如既往的,title-loc-key 和 title-loc-args 是对准 alert 中之 title
做本地化的。

14.人身攻击 

处理收到的远距离通知

此处分三栽状态讨论哪些处理远程通知:

15.暴力 

使处于前台

采取处于前台时,本地通知到时,不会见来提示音、通知栏横幅提示。但是 App
桌面图标的右上比角标是出数值显示的,所以尽管以前台,我们为当针对角标数量做拍卖;
这时,我们可以以
application:didReceiveRemoteNotification:fetchCompletionHandler:
方法被赢得到长途通知,示例代码如下:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler {
    NSData *infoData = [NSJSONSerialization dataWithJSONObject:userInfo options:0 error:nil];
    NSString *info = [[NSString alloc] initWithData:infoData encoding:NSUTF8StringEncoding];
    [self.windowRootController displayNotification:[NSString stringWithFormat:@"From didReceiveRemoteNotification: %@", info]];
    // 这里将角标数量减一,注意系统不会帮助我们处理角标数量
    application.applicationIconBadgeNumber = notification.applicationIconBadgeNumber - 1;
}

16.让人反感的情

动处于后台

当以处于后台时,远程通知到时,会因登记通知是安装的通告类型以及用户设置的通类型进行提醒,例如锁屏界面通知、通知栏通知、声音、角标。

这会儿如果滑动锁屏界面通知或者点击通知栏通知,则会切换应用及前台,我们得以采用以及应用处于前台时同的收获通知的法。

但是只要我们点击 App
桌面图标,则无法获得到用户通报,此时通知栏消息仍旧会是。此外,角标也无会见生成,如果想改角标,则需要
App 进入前台后以那修改。

17.隐私 

行使尚未运行

此地发出星星点点种植处理方式:

  • 和地面通知的处理方式相同,在
    application:didFinishLaunchingWithOptions: 的 LaunchOptions
    中取得通知,不过里面代码会略有不同,示例如下:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (remoteNotif) {
            NSData *infoData = [NSJSONSerialization dataWithJSONObject:remoteNotif options:0 error:nil];
            NSString *info = [[NSString alloc] initWithData:infoData encoding:NSUTF8StringEncoding];
            [self.windowRootController displayNotification:[NSString stringWithFormat:@"From didFinishLaunch: %@", info]];
            [UIApplication sharedApplication].applicationIconBadgeNumber -= 1;
        }
        // Your own other codes.
        return YES;
    }
    
  • 及下处于前后台时处理方式相同,使用application:didReceiveRemoteNotification:fetchCompletionHandler:
    方法,示例代码见 “应用处于前台”
    时的处理。对于远程通知,推荐下此种植艺术处理。

    除此以外,对于远程通知,如果我们点击 App
    桌面图标,则无法取得到用户通报,此时通知栏消息还是会存在。此外,角标也不见面转移,如果欲改角标,则要
    App 进入前台后将该修改。

18.色情 

长距离通知-静默推送

沉默推送是依用在前台要后台状态下,收到远程通知时,没有弹窗或横幅提示,即使远在后台也可以拍卖远程通知。具体使用流程如下:

  1. 打开应用工程 Target 的 Capacities,将 Background Modes
    选项打开,并且勾选 Remote Notifications;

  2. 在 Provider 发送远程通知时,需要以远程通知 Payload 中之 aps 内之
    content-available 设置为 1,如下:

     aps {  
         content-available: 1
         alert: {...}
     }
    
  3. 应用得贯彻
    application:didReceiveRemoteNotification:fetchCompletionHandler:
    方法接收静默推送。

有几沾要留意:

  1. 运用静默推送时,alert 字段非应有其他信息,但得装 aps
    内之自定义字段;
  2. sound 和 badge 字段可以设置,但极不装,否则会发提醒音;
  3. 沉默寡言推送只有当以处于前台要后台时才会处理,当使用尚未启动时凡收不交静默推送的;
  4. 处理静默推送时,不可知举行耗时操作,因为系统只吧这种处理作为分配少量时,如下载文件之类的操作请动后台下载服务。

19.宗教、文化与种族 

但是操作通知

先是用专注的是,可操作通知不过适用于 iOS8 及后的系。

然操作通知其实并无是同一种植新的通形式,它只是当当时地方通知以及长距离通知之底蕴及加以了一些可是操作的行为而已。为了直观说明什么是可操作通知,可以参见下图:

Actionable-Notification.png

然操作通知呢用户提供了以通告提示着好执行操作的法门,在利用横幅提示通知消息时,最多好生点儿独操作,在运用弹窗提示通知消息是,最多得有四单操作。下面教如何以:

20.竞赛、赌博、彩票和抽奖

季:定义可操作通知的行事

主干采用方式:

  1. 创办一个 UIMutableUserNotificationAction
    对象,并论需要安排该对象的属性,示例代码:

    UIMutableUserNotificationAction *acceptAction = [[UIMutableUserNotificationAction alloc] init];
    // 为该操作设置一个 id
    acceptAction.identifier = @"accept";
    // 设置该操作对应的 button 显示的字符串
    acceptAction.title = @"Accept";
    // 指定是否需要应用处于运行状态
    acceptAction.activationMode = UIUserNotificationActivationModeBackground;
    // 表示该操作是否有害,若设置为 YES,则对应的button会有高亮
    acceptAction.destructive = NO;
    // 当锁屏时收到可操作通知,该属性表示是否必须解锁才能执行该操作
    acceptAction.authenticationRequired = YES;
    
  2. 始建一个 UIMutableUserNotificationCategory
    对象,并以从定义的操作通过 setActions: 的方设置于 category
    对象。代码如下:

    // 这里为了测试,又新建了两个 action,declineAction 和 maybeAction ,代码可见 demo
    UIMutableUserNotificationCategory *inviteCategory = [[UIMutableUserNotificationCategory alloc] init];
    // 设置一个 ID,用于本地通知或远程通知时指定该通知可执行的操作group
    inviteCategory.identifier = @"Action";
    // 为弹窗模式设置 actions
    [inviteCategory setActions:@[acceptAction, maybeAction, declineAction] forContext:UIUserNotificationActionContextDefault];
    // 为横幅模式设置 actions
    [inviteCategory setActions:@[acceptAction, declineAction] forContext:UIUserNotificationActionContextMinimal];
    
  3. 报通知类型和可操作的actions

    看似于本地通知以及长距离通知,调用 registerUserNotificationSettings:
    注册通知,只是这里的 setting 加入了我们地方定义的 category。

    NSSet *categories = [NSSet setWithObjects:inviteCategory, nil];
    // 这里 types 可以自定义,如果 types 为 0,那么所有的用户通知均会静默的接收,系统不会给用户任何提示(当然,App 可以自己处理并给出提示)
    UIUserNotificationType types = (UIUserNotificationType) (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert);
    // 这里 categories 可暂不深入,本文后面会详细讲解。
    UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:categories];
    // 当应用安装后第一次调用该方法时,系统会弹窗提示用户是否允许接收通知
    [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
    

假若拿只是实施通知用于远程通知,那么得遵循长途通知的登记方式得到
token,可参照远程通知之报。

21.慈善与扶 

发送可操作通知

前面说了,可操作通知只是在本土通知以及长距离通知之根底及加了打定义的操作,所以发送可操作通知就是发送本地通知或者远程通知。不过,如果期望咱们由定义之
action 有效,在殡葬本地通知或者远程通知时需进行部分反:

  • 地面通知之可操作通知
    呢 UILocalNotification 对象设置我们打定义之 category。如下:

    UILocalNotification *notification = [[UILocalNotification alloc] init];
    // Other configurations
    notification.category = @"Action";
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    
  • 长途通知的可操作通知
    每当长途通知之 Payload 中设置我们打定义之 category,如下:

    {
        "aps" :  {
            "alert" : "You’re invited!",
            "category" : "Action"
        }
    }
    

22.法规而起 

拍卖可操作通知

拍卖可操作通知和处理地方通知和远程通知一致,唯一的不同点就是当用户执行了有操作后,应用可以当后台运行application:handleActionWithIdentifier:forRemoteNotification:completionHandler:
处理通报(例如后台更新数据等操作),我们得以于这回调里迅速的履行操作:

- (void)application:(UIApplication *) application
              handleActionWithIdentifier: (NSString *) identifier
          // either forLocalNotification: (NSDictionary *) notification or
                   forRemoteNotification: (NSDictionary *) notification
                       completionHandler: (void (^)()) completionHandler {

    if ([identifier isEqualToString: @"accept"]) {
        [self handleAcceptActionWithNotification:notification];
    }

    // 执行自定义代码完成后必须调用
    completionHandler();
}

对此地方通知我们好使用
application:handleActionWithIdentifier:forLocalNotification:completionHandler:

23.Passbook�

然操作通知到底有啊利益?

此地选出个例证说明:
假如A为B发出了一个到场发布会邀请,并且 App
是因长途通知之法子收受至拖欠信息,那么当不利用可操作通知之早晚,我们要举行的事情要概括:

  1. 用户用打开应用;
  2. App 查看远程通知之情节是一个邀,那么 App
    应该弹窗提示用户是否受该邀请;
  3. 用户挑选后,App 通过 Http(也可行使其它通信协议)
    将结果返回给服务器;
  4. 特邀通知处理完毕。

这就是说,如果我们采用可操作通知,可以挺简短的做到即起事情:

  1. 用户挑选接受或者拒绝邀请(用户无论需打开 App);

  2. App 通过可操作通知之回调处理用户操作结果,将结果发送给服务器;

  3. 邀通知处理完毕。

    可以看出,不论是起用户角度还是开发者角度,可操作通知都大的方便了拍卖具有可操作动作的即好像通知。

24.儿童档次

五:总结

至这边曾经教完成了用户通报的情,文章包含了苹果于来之用户通报的中坚具备用法,如果想要肯定文档是否发生无意可活动参考
Local and Remote Notification Programming
Guide
,如果本文中内容发生无意,欢迎指出和议论。

25.扩展

26.HomeKit

27.HealthKit

28.TestFlight

29.Apple Pay

1. 条条框框及原则

1.1 为App Store开发顺序,开发者必须遵从 Program License Agreement
(PLA)、人机交互指南(HIG)以及开发者和苹果签订之另外商量和合同。以下规则与示范旨在帮助开发者的先后会赢得App
Store的认可,而未是修改或者删除任何其它协商中之条目。

2. 功能

2.1 崩溃的次第用会见叫拒绝。 

2.2 存在不当的次将会晤为驳回。

2.3 跟开发者宣传不符之主次将会见于驳回。

2.4 无动文档或隐蔽功能跟讲述不符的程序用见面叫驳回。 

2.5 使用非公开API的次用会让拒。 

2.6 在指定容器范围外读写多少的次序将会见给拒。 

2.7 以任何方式要款式下载代码的顺序用见面被拒。  

2.8 安装或运行其他可尽代码的主次将会晤为拒。

2.9 beta版、demo版、trial版和test版的次第将会见给拒绝。 

2.10 iPhone程序要休经修改就能够为iPhone分辨率和2倍增 iPhone
3GS的分辨率在iPad上运行。  

2.11 与App
Store已起次序还的以或会见于拒,特别是数码多底情下,比如手电筒应用以及爱经应用。

2.12
有用性不引人注目、不特别的使用或和网站简单包扎的应用来或为驳回;不提供其他持久娱乐价值之顺序可能会见于拒。
 

2.13 主要用以营销要广告的主次用见面被拒绝。

2.14 提供欺骗或虚伪功能,却闹没发出鲜明标示的应用程序将见面吃拒。 

2.15 大于100MB(绿色原先是50MB)无法透过蜂窝网络下载的使用(App
Store会自动禁止)。

2.16
多任务程序下后台服务只有限于几栽目的:VoIP,音频播放,地理位置,完成任务与当地提醒等。

2.17 应用程序只同意使用iOS WebKit框架和WebKit Javascript浏览web内容。

2.18 鼓励酗酒或采取违禁药品,或利诱青少年饮酒还是抽烟的次用见面吃驳回。 

2.19 提供错误的系统诊断或配备数量的使用将会晤受驳回。 

2.20 向App Store上污染大量相似版本程序的开发者将会由iOS开发者计划面临开。 

2.21 简单的曲或电影采取要付至iTunes
store,书籍类使用该提交至iBookstore。

2.22 武断地冲环境(如定位要运营商)限制用户用的下会让拒。

2.23 应用得遵守iOS数据存储指导方针(iOS Data Storage
Guidelines ),否则用将让拒。 

2.24 存放在Newsstand的采用得遵循开发者项目许可协议(Developer Program
License
Agreement)的表1、表2以及表3,否则用将会让拒绝。 

2.25 类似App
Store,基于购买或促销的目的而显得外以之动将会晤受拒绝,除非是透过特别核批准(比如常规管理、航空与其他无论是障碍需要等),或者也特别群体用户提供所有重大意义的附加值的利用。

2.26
只有当app采集是由特殊核需求时,app才可以显示暨引进自家之外的另应用程序,比如常规管理、航空及无障碍需要等,否则应用程序将会晤吃拒绝。(新增) 

3. 元数据(名称、描述、评级、排名等)

3.1 应用或处女数据遭到干任何任何活动平台将会晤受拒绝。

3.2 带有占位符文本的次序将会见叫驳回  

3.3 描述中产生跟程序内容跟效能不相干的消息的运用将会见于拒绝。 

3.4 为了不混淆用户,iTunes
Connect中的用名称应当和展示在装备及之使名称相同。 

3.5 不同尺寸的app icon要一律,否则会招致混淆。  

3.6 程序图标和截图不合乎4+年华评级的次第用见面被驳回。  

3.7 目录及类型不抱吃次内容之先后将会晤为驳回。

3.8
开发者有义务吗那个程序指定适合的评级。不兼容的评级可能会见由于苹果店修改。 

3.9
开发者有责任吗那个程序指定恰当的首要字。不恰当的第一词或会见于苹果商店修改/删除。

3.10
有以下行为的开发者将见面被苹果于iOS开发者计划面临开:试图控制或者诱骗用户评级,伪造或付费评级,以及其他非般配的作为。

3.11 在设置下载前推荐用户还开iOS设备的下将见面被驳回。

3.12
在提交审查过程遭到,应用程序应涵盖能健康运作的URL,比如支持URL和隐私政策URL。 

3.13
如果应用程序的截图及营销文本没有清楚地确定要分外单独买(比如利用IAP)的始末还是项目,那么应用程序将见面吃驳回。(新增)

***3.14 App预览可以只是以于应用程序捕获的视频屏幕、旁白、文本和design
overlays,否则应用程序将会见叫拒。(10.11创新)


3.15
添加App预览的应用程序,未经许可展示实在人个人信息将见面吃驳回。(10.11创新)

3.16
App预览可能只是包括于装有选定地区内通过授权许可用于这目的的乐。(10.11更新)

3.17 App预览包含未经许可的经app播放的内容(比如iTunes
playlist和YouTube流媒体)的采取将会见于拒。(10.11创新)

4. 位置

4.1
在采访、传输或使位置数据之前不通报并拿走用户同意的顺序用会让拒绝。 

4.2
使用基于位置的API来机关控制车子、飞机还是其它装置的应用程序将会给拒。 

4.3 使用基于位置的API用于调度、车队管理还是应急服务之先后用会让驳回。

4.4
当与下功能还是服务细致入微相关时方可行使位置数据,或者用于通过授权的广告。

*4.4
当与利用功能要劳务细致入微相关时好使位置数据,或者用于通过授权的广告。 
(10.11更新)***

5. 推送通知

5.1 不使苹果推送通知 (APN)应用接口提供推送通知之程序用会给驳回。 

5.2 未从苹果获得Push Application ID便随意使用APN服务之主次将会见叫拒绝。  

5.3
在首坏推送消息还是要求推送通知运行前未取得用户许可的采用将会给拒。

5.4 使用推送通知发送敏感个人信息或机密信息的主次用见面叫拒。 

5.5
使用推送通知发送非请求消息还是用来钓鱼或群发垃圾邮件用途的顺序用见面吃拒。
 

5.6 应用程序不可下推送通知发送广告、促销或其他项目的直销信息。 

5.7 应用程序不能够朝以推送通知服务之用户接受费用。 

5.8
使用推送通知会见过多用APN服务之网络流量或带来富或于装备带来过度负担的主次用会晤受拒绝。 

5.9
如果应用程序传送病毒、文件、计算机代码或程序,并且针对APN服务之健康运行造成损伤或者暂停,那么该次用会见于拒绝。 

6. 戏中心

6.1 向终点用户要擅自第三正在出示玩家ID的程序用会见叫拒。 

6.2 将玩家ID用于其它未经游戏为主条款批准用途的主次用见面吃拒。 

6.3
试图展开反往搜索、跟踪、关联、挖掘、获得或用玩家ID、别名或通过游戏为主取得任何消息的开发者将会iOS开发者计划除名。

6.4 游戏中心消息(例如排行榜分数)只能通过玩为主用于采取中。

6.5
利用游玩为主服务发送非请求信息或者用于钓鱼或群发垃圾邮件的次将会见叫驳回。

6.6 使用游戏中心过多占用网络流量或带宽的次第用见面吃驳回。  

6.7
如果程序能够传递病毒、文件、计算机代码或程序,并且针对游戏中心服务之健康运行造成伤害或者刹车,该次用会让驳回。

7. 广告

7.1 人工刷广告浏览量或者广告点击率的应用程序将见面吃驳回。 

7.2 包含空iAd广告的应用程序将会给拒。 

7.3 主要设计目的在于显示广告之应用程序将会见叫拒绝。 

8. 商标与货物外观

8.1 应用程序必须遵“Guidelines for Using Apple Trademarks and
Copyrights”和“Apple
Trademark
List”中说明的有所条条框框及原则。 

8.2
任何误导和暗示苹果店是拖欠应用程序来源或供商,或者苹果商店为另外形式表示认同其色要效益的应用程序将见面吃驳回。 

8.3 与当下都出苹果产品还是广告主题外观般或歪曲的应用程序将见面被拒绝。 

8.4 在应用程序名称中将苹果产品号称拼错的应用程序(例如,GPS for
Iphone,iTunz)将见面吃拒。 

8.5
使用让保障之老三正材料(商标、版权、商业秘密、其他民用内容)在申请时用提供相同份文件形式之版权确认。
 

9. 媒体内容

9.1 不采用媒体播放器框架(MediaPlayer
Framework)获取音乐库中媒体内容之应用程序将会晤受拒绝。

9.2 用户界面模仿任何iPod界面的应用程序将会见叫拒绝。  

9.3 通过蜂窝网络传输的音频流内容各5分钟不得跨越5MB。 

9.4 通过蜂窝网络传输超过10分钟之视频流内容要采取HTTP Live
Streaming,并蕴藏一个基准线为64kbps的旋律HTTP Live Streaming。

 10. 用户界面

10.1 应用程序必须信守苹果的《iOS Human Interface
Guidelines》中颇具的条文和原则。 

10.2 外观及与iPhone的自带应用(比如App Store、iTunes
Store和iBookstore)相似之动将见面被驳回。

10.3 未能按照苹果《iOS Human Interface
Guidelines》描述是采取系统提供的类别(比如按钮、图标)的利用将会见于拒。

10.4
创建多桌面/主屏幕环境或拟multi-App插件体验的应用程序将见面叫驳回。 

10.5 修改音量大小及铃声/静音开关等专业开关功能的应用程序将见面吃驳回。 

10.6
苹果以及咱们的客户高度重视简单、精致、富有创造性和经过精心设计的界面。虽然要交再多,但也十分值得。苹果设立了深高之奥妙。如果你的用户界面极其过复杂或者水准不愈,可能会见给拒绝。

11. 买入同货币流通

11.1 使用App
Store以外的渠道解锁或打开附加属性和成效的应用程序将会晤为驳回。  

11.2
使用应用内开发体系(IAP)以外的体系购买内容、功能或劳动之利用软件用见面被拒。 

11.3 使用IAP购买东西商品及毫无用于该软件之服务之运用软件将见面吃驳回。 

11.4
应用程序使用IAP购买积分(Credit)或者其他的泉必须以仍利用被花。 

11.5 使用IAP购买已过积分(Credit)或者其他货币的采取软件以会晤为拒。 

11.6 使用IAP订阅的情至少要持续7上,而且允许以用户之任何iOS设备中共享。

11.7 应用程序使用IAP购买项目须分派到是的打类型中。

11.8  使用IAP购买iOS内置功能(如照相机,陀螺仪)的应用程序将会给驳回。 

11.9
含有超过限制时间之情节要劳务之应用程序将会见让拒绝,除了特别许可的始末(比如films、电视节目音乐和本本)。

11.10 保险类应用程序必须免费,遵守发布地方的法网,并且不可知使IAP。  

11.11 一般而言,你的应用程序越贵,我们的评审更为彻底。

11.12 提供订阅功能的使必须使用IAP,苹果用见面以 Developer Program
License
Agreement 遇的约定和开发者按30/70比例分成。

11.13
在使用内利用跳转到标购买或者订阅链接的利用将会晤为驳回,比如“buy”按钮跳反到一个购得电子书的web页面。

11.14
只要动内无跳转至标购买、订阅的按钮或链接,苹果允许这些使用读取或出示经特许的、在动他进或者订阅内容(特别是笔记、报纸、书籍、音频、音乐、视频及云存储内容)。苹果不得不通过应用程序内之请得有收入。

11.15
应用程序可以仅行使自动更新订阅期刊(报纸、杂志)、商业应用程序(企业类、效率类、专业创意类与云存储类)和传媒应用程序(视频、音频、声音),否则应用程序将让拒。

11.16
当跟特定的经审批的实业产品(比如玩具)结合使用时,应用程序可以应用得许可的附件功能,只要附加功能了依靠让该硬件产品(比如同舒缓用于控制望远镜的应用程序)或者也可于匪动实物产品的情状下采取应用程序,比如当成事之嘉奖或下IAP。
 

11.17
如果使用功能仍各州和联邦法律,那么下可就此来促进被认同的虚构货币的流通。(新增) 

12. 抓取和集聚

12.1 从苹果网站(例如apple.com、iTunes Store、App Store、iTunes
Connect以及Apple Developer
Programs等)抓取任何音讯还是使用苹果网站内容与服务开展排名之应用程序将见面被驳回。
  

12.2 应用软件可以下得认可的苹果RSS feeds,例如iTunes Store RSS
feeds。  

12.3 只是简短的网页剪切、内容结合或收集链接的应用程序可能会见受拒绝。

13. 危害设备

13.1 怂恿用户以可能致危害的艺术采用苹果设备的采用软件用会晤吃驳回。 

13.2 快速耗光设备电量或发过多热量的行使软件将会晤受驳回。

13.3 能导致用户人身损害的app将会见叫拒(新增)

14. 人身攻击

14.1
涉及诽谤、人身攻击性质和内容狭隘卑鄙的下软件或打击特定个人或集团的使用软件以会给拒。 

14.2 职业政治讽刺家及有趣作家匪叫这等同章约束。

14.3
展示用户做始末(UGC)的应用程序必须提供一个过滤不良资讯的办法,一个用户可以记具有侵犯性内容之机制及可阻止辱骂用户的力量。(10.11翻新)

15. 暴力

15.1
应用程序中出现人还是动物为百般、致残以及枪击、刺伤、拷打等受伤情况的诚实画面将会见给拒。 

15.2 出现描绘暴力还是虐待儿童等内容的应用程序将会见叫拒。 

15.3
游戏受出现的“敌人”不可指向一个一定种族、文化、一个实存在的当局、企业还是其它任何现实中之实业。 

15.4
对铁进行实描述为煽动非法利用还是滥用这些武器的应用程序将会晤为驳回。 

15.5蕴含俄罗斯轮盘赌博情节之游玩将会见给驳回。 

16.叫人反感的始末

16.1 应用程序中冒出过度令人反感或者低俗的情以会让拒。 

16.2 在规划及激怒用户或使人感觉到厌烦之应用程序将会给拒。

17.隐私

17.1
在未经用户先批准,或非报告用户如何以信息,在哪儿使用信息之景象下,应用程序不能够传输用户数量。

17.2
要求用户提供电子邮箱地址和出生日期等亲信信息才可采取其效的应用程序将见面被拒绝。 

17.3
仅出于遵守适用的小隐私法的目的,应用程序可以要求用户的出生日期(或者采取其他age-gating机制),但是必须概括部分行之有效之成效还是游戏价值,不管用户年龄大小。 

17.4
应用程序收集、传输和享受未成年用户个人信息(比如名、地址、邮件、位置、照片、视频、绘画、聊天与另个人数据,或者跟上述所述相关的永久性标示符)必须遵守应用儿童隐私法,并且要带有隐私条文。

17.5 包含账号注册或看用户现有账号的应用程序必须带有隐私策略,否则将会见于驳回。

18. 色情

18.1
含有色情资料,也即是《韦氏词典》中定义之“旨在鼓舞性欲,对性器官或性行为的明明描述或出示,而无关美学或心态感受”的次第用见面吃拒。

18.2 用户频繁提供生成色情内容的应用程序(比如原先的Chat
Roulette程序)将见面被驳回。

19.教,文化及种族

19.1
涉及宗教、文化或种族群体的援或评头品足包含诽谤性、攻击性或者窄内容,或会要特定群体面临迫害或武力之应用程序将见面被拒绝。

19.2
程序可以涵盖或引用宗教经文,程序所提供的援或翻译要准确且非会见惹误导。评论应该来教育意义,可以使得人开阔眼界,而非应当煽动性。

20. 竞技、赌博、彩票和抽奖 

20.1 赌博跟斗必须由应用程序的开发者或者app所属企业发起。

20.2
应用程序必须出示赌博跟竞技的正统规则,并扬言苹果不是发起者,也尚未以任何方法介入活动。 

20.3
开发者运营一慢性具有抽奖性质的使必须透过法律允许,并且抽奖应用得备以下特征:报酬、机会跟奖品。
  

20.4 允许用户在采取被一直购买彩票还是彩券的应用将见面被拒绝

20.5
提供真钱游戏(比如体育博彩、扑克牌、赌场玩和赛马)的应用程序必须来使使用区当地必要之准与同意,必须界定在这些区域,必须得从App
Store免费下载。�

20.6  使用IAP购买信誉或者钱,且成真钱游戏之动将会让拒。

21.慈善以及援助

21.1 包含可以向已经证明的慈爱组织给功能的应用程序必须是免费的。  

21.2 捐赠款项的采集必须通过Safari浏览器访问web页面或是手机短消息就。 

22. 王法如起

22.1
应用程序必须遵从所有发布地方地面法规,开发者有义务了解并恪守所有地方法律。 

22.2 包含虚假,欺诈或误导性陈述的先后用会见叫拒。 

22.3 任何招徕、促进或鼓励犯罪或强烈鲁莽行事的程序用见面吃拒。 

22.4 支持非法文件共享的次用会给拒。 

22.5 被规划用来非法赌博工具的应用程序(包括点算牌)将会见叫拒。

22.6 具有匿名或恶作剧拨打电话或者发送类似短信/彩信功能的次将会见于拒。

22.7
任何付出暗中募集用户密码还是用户私人数据程序的开发者将会见于iOS开发者计划遭遇开。 

22.8
包含无法律实践有发布的DUI检查点信息,或者怂恿/协助酒后驱车的运用将会给拒。

22.9
任何计算药用剂量的用得交给药品制造商或确认机构(比如医院、保险企业跟大学)。 

22.10.在不授权的情形下采取iTunes音乐预览的应用程序将会给拒绝。新增)

23. Passbook 

23.1 Passbook
Passes可为用来开发或接受支付,传递商业信息或者提供证明(比如电影票、飞机票、优惠券与另),而把Passbook
Passes用于其他用途的应用程序可能会见受到驳回,并且会给注销Passbook证书。

23.2
Passes必须带有有效之pass发行人有效之维系资料,否则app将会让拒绝,并且Passbook证书也会为裁撤。

23.3
Passes必须经实体签名,并冲该名、商标或品牌进行分发,否则应用程序将见面被拒,而Passbook证书也可能会见让收回。

24.儿童品类 �

24.1
主要供应孩子使用的应用程序必须含有隐私政策,必须适用于应用程序的娃儿隐私法。

 24.2
主要供应小孩子使用的应用程序不容许包括作为广告(比如根据用户app内部活动的广告),任何在应用程序中显得的上下文广告要符合儿童。

 24.3 主要供应小孩子用的应用程序必须获得父母许可或以parental
gate才会链接到应用程序外部或进行贸易。

 24.4 儿童类别中的应用程序必须标明“5春以下,6-8夏或9-11夏”。

 9月3日激增内容

25.扩展

25.1 包含扩展的应用程序必须按 App Extension Programming Guide
(中文版,英文版)要求。

 25.2
包含扩展的应用程序必须提供一些功能(辅助屏幕,附加设置)否则将会见叫拒。

 25.3
如果扩展的视图中富含营销推广、广告要IAP内容,那么带有该扩展的行使将会给拒。 

25.4 键盘扩展必须提供一个切换至下单键盘的主意。 

25.5 键盘扩展必须具备离线访问功能,否则用见面吃拒。 

25.6 键盘扩展必须提供和 App Extension Programming
Guide 描述一致的数字和什向前键盘类型,否则将会见叫拒绝。

 25.7
提供键盘扩展的行使必须备核心的效益分类与隐私政策,否则将会给拒。 

25.8
提供键盘扩展的应用程序只允许搜集用户活动为增长键盘扩展在iOS设备上的作用,否则将会晤为拒绝。

 26.HomeKit

26.1运HomeKit框架的应用程序必须出供家中自动化服务的严重性目的。 

26.2
使用HomeKit框架的应用程序必须以营销文本中验证用途,同时须提供隐私政策,否则用会晤为驳回。 

26.3应用程序不允许以自HomeKit
 API收集之多少用于广告宣传或者其他根据使用的多寡挖掘。

 26.4 出于其他目的采取自HomeKit
 API收集之数,而非是用于加强用户体验还是家中自动化功能中硬件/软件性能,这好像以将见面于拒绝。  

27.HealthKit

27.1 使用HealthKit框架的应用程序必须信守该所在区域的适用法律,以及iOS
Developer Program License
Agreement中的3.3.28和3.39条款。 

27.2以虚假或者不当的数写入HealthKit的应用程序将会让驳回。

 27.3 使用HealthKit框架iCloud中储存用户正常信息之应用程序将会见于驳回。

 27.4 应用程序不允用通过HealthKit
API收集的用户数量作为广告宣传或者根据使用的数挖掘目的,除了改善健康、医疗、健康管理及医学研讨目的。 

27.5 未经用户许可与第三在分享由此HealthKit
API获得的用户数量的应用程序将会晤受拒绝。 

27.6 使用HealthKit框架的应用程序必须在营销文本中证明并了Health
app,同时要以app用户界面清楚阐释HealthKit功能。

 27.7施用HealthKit框架的应用程序必须提供隐私政策,否则将见面被拒绝。

 27.8
提供诊断、治疗建议要控制硬件以诊断或者看病的行使,若没有根据要求提供书面的监管审批,将会给拒绝。  

28.TestFlight

28.1应用程序仅会采用TestFlight对因为公开发布也目的的动进行beta版测试,且务必信守完整的App
Review Guidelines。

 28.2
当版本中涵盖的情节还是效益有举足轻重变动时,使用TestFlight的应用程序必须提交对。 

28.3 使用TestFlight的应用程序不容许分发给测试者,以作为其他形式的补给。

 9月10日增产内容

29. Apple Pay

29.1 使用Apple
Pay的应用程序必须在发售外货物还是服务之前也用户提供具有素材的进信息,否则用见面被拒。 

29.2 使用Apple Pay的应用程序必须科学行使 Apple Pay Human Interface
Guidelines 中之Apple Pay标识和用户界面元素,否则用会见于驳回。

 29.3 使用Apple
Pay的应用程序不克提供触犯任何领域范围法律的用来交付的货品或服务,也无克为此作外非法目的。

 29.4 使用Apple Pay的应用程序必须提供隐私政策,否则将会见于拒。

 29.5 只有为推进或增强货物和服务之提交,或者随法规要求,使用Apple
Pay的应用程序才能够跟第三正分享由此Apple Pay获得的数码。

原本内容转载自,已经对转载内容做了照平台的翻阅优化:http://www.cocoachina.com/appstore/20141011/9883.html

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图