Re: [sipcore] Push notifications with iOS 13 (RFC 8599)

Simon MORLAT <simon.morlat@gmail.com> Sun, 11 October 2020 20:43 UTC

Return-Path: <simon.morlat@gmail.com>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 26DA33A08B9 for <sipcore@ietfa.amsl.com>; Sun, 11 Oct 2020 13:43:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CzCAcSaArD_6 for <sipcore@ietfa.amsl.com>; Sun, 11 Oct 2020 13:43:50 -0700 (PDT)
Received: from mail-oi1-x242.google.com (mail-oi1-x242.google.com [IPv6:2607:f8b0:4864:20::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EFA1D3A08B2 for <sipcore@ietf.org>; Sun, 11 Oct 2020 13:43:49 -0700 (PDT)
Received: by mail-oi1-x242.google.com with SMTP id x62so16557785oix.11 for <sipcore@ietf.org>; Sun, 11 Oct 2020 13:43:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=gpuspdb2F+sf/8/U6Vfw3tcDUm2+xWPXctsu063arcc=; b=pKicZGfIFLeGJRxtRivC926U9Zum1AHmZOGcYwpw2U31qRcRSIbPFY712FKi5zkNWF IgovWWtAyX39Xu/QqUEYx2jC1c7A0aaJLq53y8hjANTLLe1mZAM2NF4mp+X7cZq2OkRK HtgIKbO4EBn6qaVLKIasMfN8HOS+enS2l51sMio1U/WPLEQaDWDabwqG2l+Y6KMIN2Ww mYAbFJl48DwOXSn+qDhNyhvPf2M4xJgI7SRKo3Yyxi3HopEaI5nJas0WAtGXiq80NmrY 7rqDIqX8d+mOT9cETvGslXNnovlotrPUl8xKTHTrkkHxu9O+zb8k7Ppe3sgkrKLXJID9 S9OQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=gpuspdb2F+sf/8/U6Vfw3tcDUm2+xWPXctsu063arcc=; b=J1PiDIkvLHrIZPc5OkFLkIsFXmEoGBMMQlqYGt+r/211N/4pB1Ji5vt9smyrYNme7c /rdxC4T12EU5878YLApHZKw3iOWm5t9Rs2jJlPL6YBZ7I8GClqOJMRnSxjYBJD9rKHp/ k6JCQWYuE80PKfVeid3oQ2XK8oIODBr5vbFn/sgLSslf1Afy4Ug/IPEhXLBsK2YQZq2c Un+UPoS0IQWJ++OnhNTkQ9FNy3FSRH/w0COMjM6AWfQ2lkLRk5oy0OrDEYoIHgOsFeZD K89AV8QXq7dPJv+YZgRYyxe3T4eiNBQrRXp9h0MbCFBqRY7dGPj2XCiBqfUA667QTpD9 F8GA==
X-Gm-Message-State: AOAM532GnUoORqfpjqvE/ON/HFHcUsOCiA9jsk5kKYB50AJqVFqb5PbE Q6Zs1+g3pXnk+/J61JCvSQV95Av4IL3UGmw4tJY=
X-Google-Smtp-Source: ABdhPJzifLDEiEnMyxdKveaMIEkWDAbKtmaVLZ6Ul43iktTAw5Hjwy0/9O33YCRAOscYyKzo5Iix1w4LuLm6iPxTZi0=
X-Received: by 2002:aca:b2d7:: with SMTP id b206mr9262467oif.110.1602449029185; Sun, 11 Oct 2020 13:43:49 -0700 (PDT)
MIME-Version: 1.0
References: <CAF_j7yb_UeGsODVz1tYw021XCf7AxZOySLghcgAxa0sHr-ysbw@mail.gmail.com>
In-Reply-To: <CAF_j7yb_UeGsODVz1tYw021XCf7AxZOySLghcgAxa0sHr-ysbw@mail.gmail.com>
From: Simon MORLAT <simon.morlat@gmail.com>
Date: Sun, 11 Oct 2020 22:43:29 +0200
Message-ID: <CAH_g9RxcXZV8KjaN6boLckKJywrZx_XCPaqEUdFowtHQn8kvkA@mail.gmail.com>
To: Yehoshua Gev <yoshigev@gmail.com>
Cc: sipcore <sipcore@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000027c44005b16b3d16"
Archived-At: <https://mailarchive.ietf.org/arch/msg/sipcore/DnIusqHJ9ysZItib6SMrHdAXsL0>
Subject: Re: [sipcore] Push notifications with iOS 13 (RFC 8599)
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sipcore/>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 11 Oct 2020 20:43:52 -0000

Hi Yehoshua,

Thank you for starting this discussion.
My company is developing the Linphone software (https://linphone.org), an
cross platform open-source SIP softphone and SDK.
The last version we published was for adding compatibility for iOS 13. I
admit it was a nightmare to comply with the new restrictions.
For push notifications, we based our work on RFC 8599 , but indeed we had
to somewhat extend the RFC in order to transmit 2 different push
notification tokens:
- the one for calls (PushKit kind of notifications)
- the one for IMs (using Remote push notification service).

To answer your question: the "remote push notification" token could
apparently also be used for "Background push notifications" (
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app?language=objc
), which are the push notifications we need to refresh a REGISTER that is
about to expire (or expired). So yes you need two different push services
and tokens.

As of today, the Linphone app doesn't use push notifications for triggering
REGISTER refreshes: we use a very long expire time (one year) instead.
However we would prefer to switch to push-triggered REGISTER refresh as
soon as possible.

The syntax extension we made to RFC8599 is described in our wiki:

https://wiki.linphone.org/xwiki/wiki/public/view/Lib/Getting%20started/iOS/#HUpdateContactURIparameters

We designed this syntax to be compatible with RFC8599 syntax. To summarize,
here is a quick example to understand how we convey push tokens for an app
that needs to advertise calls and IMs:

pn-prid=00fc13adff78512:voip&c11292f7b74733d:remote;
pn-param=DEF123GHIJ.org.linphone.phone.voip&remote;pn-provider=apns

Notice the ":voip" and ":remote" token suffixes, and the "&".
We decided not to go with a multiple contact headers approach, each contact
uri bearing a pn-prid for either voip or remote service: the forking by a
proxy that is unaware of push notifications could result in INVITEs to be
duplicated.

We had to go fast otherwise our app would stop working, but from the
beginning we have in mind that this issue should be raised and hopefully
resolved here at IETF, with or without our proposed syntax extension.

Today due to Apple's recent changes, it looks like RFC8599 cannot be used
"as is" to make a SIP app for iOS. The risk that Google does the same in
near future exists.
Are there people interested here in collaborating to an RFC8599 update to
address this iOS platform evolution ? In other words, we need to solve how
to convey multiple pn-prid and pn-param for a same user-agent instance.

Best regards,

Simon







Le dim. 11 oct. 2020 à 17:07, Yehoshua Gev <yoshigev@gmail.com> a écrit :

> Hi All,
>
> I hope it is ok to post this here and not on sip-implementors...
>
> We are trying to implement RFC 8599 for performing push notifications for
> Apple devices.
>
> Starting with iOS 13, there is a restriction on VoIP pushes [1]: "Apps
> receiving VoIP push notifications *must report the call quickly to
> CallKit, so it can alert the user* to the presence of the incoming call."
>
> According to RFC 8599, pushes are used for (at least) two different goals:
>   1) Initiating registration refreshes (section 5.5)
>   2) Notifying of incoming calls (section 5.6.2)
>
> Now, for a reasonable user experience, the registration refresh pushes
> must not trigger the UI of incoming call.
> However, when an INVITE is received, the UA must be awoken immediately,
> which is the purpose of VoIP push.
>
> Does it make sense to make a different push type for registration refresh
> and for incoming calls?
>
> I'm not sure this is possible with the current RFC (and it is also against
> the spirit of the RFC), but I can't think of another way around it (besides
> using regular pushes instead of VoIP pushes, which might introduce delays,
> or having a registration with infinite expiration that will not require
> refreshes, which might leave many zomby registrations).
>
> See some discussion here: [2], [3].
>
> Thanks,
> Yehoshua
>
> [1]
> https://developer.apple.com/documentation/pushkit/pkpushtype/1614481-voip
> [2] https://developer.apple.com/forums/thread/117939
> [3] https://www.linphone.org/news/ios-13-important-changes-voipim-apps
>
> _______________________________________________
> sipcore mailing list
> sipcore@ietf.org
> https://www.ietf.org/mailman/listinfo/sipcore
>