Package Exports
- react-native-aliyun-onesdk
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-aliyun-onesdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-native-aliyun-onesdk
#install npm install react-native-aliyun-onesdk --save
#usage
react-native link react-native-aliyun-onesdk
#configuration :
ios: https://help.aliyun.com/document_detail/30072.html
android: https://help.aliyun.com/document_detail/30064.html
##ios
mkdir yourProject/ios/OneSDK
put the aliyun frameworks to the dir
add com.alibaba.app.appkey/com.alibaba.app.appsecret to your info.plist
Appdelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[self initCloudPush];
...
}
- (void)initCloudPush {
// SDK初始化
NSString *appKey = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"com.alibaba.app.appkey"];
NSString *appSecret = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"com.alibaba.app.appsecret"];
[CloudPushSDK asyncInit:appKey appSecret:appSecret callback:^(CloudPushCallbackResult *res) {
if (res.success) {
} else {
}
}];
}
#pragma mark Notification Open
/*
* App处于启动状态时,通知打开回调
*/
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {
NSLog(@"Receive one notification.");
// 取得APNS通知内容
NSDictionary *aps = [userInfo valueForKey:@"aps"];
// 内容
NSString *content = [aps valueForKey:@"alert"];
// badge数量
NSInteger badge = [[aps valueForKey:@"badge"] integerValue]+1;
// 播放声音
NSString *sound = [aps valueForKey:@"sound"];
// 取得Extras字段内容
NSString *Extras = [userInfo valueForKey:@"Extras"]; //服务端中Extras字段,key是自己定义的
NSLog(@"content = [%@], badge = [%ld], sound = [%@], Extras = [%@]", content, (long)badge, sound, Extras);
// iOS badge 清0
// application.applicationIconBadgeNumber = badge+1;
// 通知打开回执上报
// application.applicationIconBadgeNumber = application.applicationIconBadgeNumber+1;
[AliPushManager didReceiveRemoteNotification:userInfo];
}
// Required to register for notifications
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
[AliPushManager didRegisterUserNotificationSettings:notificationSettings];
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"Upload deviceToken to CloudPush server.deviceToken:%@",deviceToken);
[AliPushManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}##android
@Override
public void onCreate() {
super.onCreate();
...
initCloudChannel(this);
}
/**
* 初始化云推送通道
*
* @param applicationContext
*/
private void initCloudChannel(Context applicationContext) {
PushServiceFactory.init(applicationContext);
CloudPushService pushService = PushServiceFactory.getCloudPushService();
pushService.register(applicationContext, new CommonCallback() {
@Override
public void onSuccess(String response) {
Log.d(TAG, "init cloudchannel success");
}
@Override
public void onFailed(String errorCode, String errorMessage) {
Log.d(TAG, "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
}
});
//注册方法会自动判断是否支持小米系统推送,如不支持会跳过注册。
// MiPushRegister.register(applicationContext, "2882303761517489550", "5201748990550");
//注册方法会自动判断是否支持华为系统推送,如不支持会跳过注册。
// HuaWeiRegister.register(applicationContext);
}##js
import AliPush from 'react-native-aliyun-onesdk';
AliPush.getInitialNotification().then((notification)=> {});
AliPush.requestPermissions().then((deviceId)=> {}, ()=> {});
AliPush.on('remoteNotificationReceived', (notification)=> {
//ios 在前台运行时 同样触发该方法,此时没有提示框,
}); #available ##push remoteNotification bindAccount unbindAccount