当前位置: 首页 > 知识库问答 >
问题:

华为Push Kit Flutter:Push.getToken()返回ResultCode-5

子车征
2023-03-14
## Flutter wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-dontwarn io.flutter.embedding.**

## HMS Core SDK
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.huawei.hianalytics.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.release
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

下面是初始化和获取令牌部分的代码:

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {


  String _token = '';

  @override
  void initState() {
    HwAds.init();
    initPush();
    super.initState();
  }

  Future<void> initPush() async {
    if (!mounted) return;
    Push.getTokenStream.listen(_onTokenEvent, onError: _onTokenError);
  }

  void _onTokenEvent(String event) {
    print('onTokenEvent');
    _token = event;
    showResult("TokenEvent", _token);
  }

  void _onTokenError(Object error) {
    print('onTokenError');
    PlatformException e = error;
    showResult("TokenErrorEvent", e.message);
  }

  void showResult(String name, [String msg = "Button pressed."]) {
    print('$name: $msg');
    if (msg.isNotEmpty) Push.showToast(msg);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      body: SingleChildScrollView(
        child: Column(
          children: [
            RaisedButton(
              child: Text('Interstitial Ad Page'),
              onPressed: ()=> Navigator.pushNamed(context, '/interstitialPage'),
            ),
            RaisedButton(
              child: Text('Get token'),
              onPressed: ()=> Push.getToken(''),
            ),
          ],
        ),
      ),
    );
  }
}

我正在使用云调试,模型名是P40。我创建了一个发布apk,选择了数据存储位置,提供了SHA256,启用了推送工具包,在启用推送工具包后更新了agconnect-services。我还有什么遗漏的吗?

共有1个答案

江仲渊
2023-03-14

您可以尝试添加

-keep class com.huawei.hms.flutter.** { *; }

到你的proguard-rules.pro

检查这个官方样品

 类似资料:
  • 在我get,但是中也没有给出令牌。 检索令牌的代码: 结果也不例外。但是令牌是空的(请参见最后一行日志)。 关于手机和应用程序的信息: 手机:华为Y7P Android系统:10 EMUI:10.1.0 agconnect: 普希基特: agconnect-core: 自动初始化: 英国皇家海军服务: null null

  • 我总是用下面的代码得到。 这是我的process代码 但如果coderesultcode正常工作。 这是我的

  • 下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!

  • 我尝试从app_id获取评论列表。我做了文档中的所有事情,但我不明白为什么我无法获取评论列表。 请求输出 屏幕从管理菜单 p、 美国文件https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-References/agcapi-getreviews

  • 问题内容: 我有以下POJO: 我正在建立一个库来检测OneToOne或ManyToOne(并进行适当的操作)。它总是作为ManyToOne回来。 `` for(String propertyName:cmd.getPropertyNames()){org.hibernate.type.Type propertyType = cmd.getPropertyType(propertyName); }

  • 根据JSON规范,表示null值的正确方法是文字。 预期结果: 实际结果: