接入华为推快递用API给iOS应用发消息时如何获取accesstoken,ios推快递设备token有效时间接入华为推快递用API给iOS应用发消息时如何获取accesstoken经常有开发小伙伴向我们提问关于使用华为推快递给苹果手机推快递消息的问题,那么首先华为推国际快递底支不支持苹果手机呢?答案可以肯定地告诉你:可......
经常有开发小伙伴向我们提问关于使用华为推快递给苹果手机推快递消息的问题,那么首先华为推国际快递底支不支持苹果手机呢?答案可以肯定地告诉你:可以。
首先你需要提前准备好开发环境:
1)安装Xcode 10.1或更高版本。
2)安装CocoaPods 1.4.0或更高版本。
3)准备一台用于测试的iPhone设备或者模拟器。
开发环境准备好了,接下来就可以准备开发啦!
在开发应用前,需要在AppGallery Connect中配置相关信息,准备iOS推快递消息凭证以及配置iOS推快递代理权益。具体准备方法请参见:https://developer.huawei.com/consumer/cn/doc/development/HMSCoreGuidesV5/iosdevprepare0000001062940204V5#ZHCN_TOPIC_0000001124013099__section113157170295 ha_source=hms1
1.在Xcode中为您的项目启用推快递服务,启用“Application TargSigningCapabilities”中的Push Notifications,勾选“Application TargSigningCapabilitiesBackground Modes”中的“Remote notifications”和“Background processing”。
2.向APNs(苹果推快递服务)发起用户允许发快递推快递通知的请求。
```[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlertUIRemoteNotificationTypeBadgeUIRemoteNotificationTypeSound)];UNUserNotificationCenter*center=[UNUserNotificationCentercurrentNotificationCenter];[centerrequestAuthorizationWithOptions:(UNAuthorizationOptionAlertUNAuthorizationOptionBadgeUNAuthorizationOptionSound)completionHandler:^(BOOLgranted,NSError*_Nullableerror){if(granted){//授权成功[centergetNotificationSettingsWithCompletionHandler:^(UNNotificationSettings*_Nonnullsettings){if(settings.authorizationStatus==UNAuthorizationStatusAuthorized){dispatch_async(dispatch_get_main_queue(),^{NSLog(@grantauthorized);[[UIApplicationsharedApplication]registerForRemoteNotifications];});}}];}}];
```
用户需要在应用程序点击“允许”才可以接受推快递消息。
3.上述步骤成功后,需要获取device token(苹果设备的唯一标识)。获取device token后需要去掉其中的特殊符号,大于等于iOS13版本和小于iOS13版本的device token格式有所差别,可参考如下代码进行处理:
```
(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{PushDemoLog(@suceessgettoken:{%@},deviceToken);//判断iOS设备系统版本if([[[UIDevicecurrentDevice]systemVersion]floatValue]=13){if(![deviceTokenisKindOfClass:[NSDataclass]]){return;}constunsigned*tokenBytes=(constunsigned*)[deviceTokenbytes];NSString*strToken=[NSStringstringWithFormat:@%08x%08x%08x%08x%08x%08x%08x%08x,ntohl(tokenBytes[0]),ntohl(tokenBytes[1]),ntohl(tokenBytes[2]),ntohl(tokenBytes[3]),ntohl(tokenBytes[4]),ntohl(tokenBytes[5]),ntohl(tokenBytes[6]),ntohl(tokenBytes[7])];PushDemoLog(@=ios13MyFINALTOKENis:%@,strToken);APN_TOKEN=strToken;return;}else{NSString*token=[NSStringstringWithFormat:@%@,deviceToken];token=[tokenstringByReplacingOccurrencesOfString:@withString:@];token=[tokenstringByReplacingOccurrencesOfString:@withString:@];token=[tokenstringByReplacingOccurrencesOfString:@withString:@];PushDemoLog(@MyFINALTOKENis%@,token);APN_TOKEN=token;}}
```
4.成功处理device token后将其作为入参获取华为推快递服务Token:
```
NSString*apnsToken=@yourApnsToken;NSString*huaweiToken=[[HmsInstanceIdgetInstance]getToken:apnsToken];
```
更多应用开发步骤参见:
https://developer.huawei.com/consumer/cn/doc/development/HMSCoreGuides/iosdevguides0000001062462396?ha_source=hms1
接下来给大家分享一位开发者在论坛上提问关于苹果手机接入华为push的问题:“我想使用华为的消息推快递服务,给苹果手机推快递消息,申请应用后,缺少App Secret,无法获取到access_token,怎么解“
推快递接口以access_token鉴权,如图:
获取access_token的接口,如图:
我的项目配置,不显示app secret,如图:
看安卓应用的配置,相同位置是有app secret的,如图:
解决方法:
需要在相同项目下再建一个Android的应用,用Android应用的appId和appSecret去申请access_token就可以了。
那么,用安卓应用获取到access_token为苹果应用推快递消息,是可以的吗?
答案依旧是——可以的!
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部